如何发现php wangye loudong
0x01: 搜索所有的用户可控变量(GET/POST/COOKIE/referer)
原因:所有用户输入都是有害的,代码审计注重函数和变量,先看看在什么地方会有输入
可能出现的场景:
a) id=$_GET['id'];
可能存在的问题:
无过滤的SQL注入:
WooYun: chshcms 程氏CMS V3.0 注射(已在官方演示站测试)
1
$id=trim($_GET["id"]);
//下面直接就进查询语句了
1
if($db-query("update ".Getdbname('dance')." set CS_TID=".$tid." where cs_user='".$cscms_name."' and
当然,这是GET之后没做过滤的情景
b) id=intval($_GET['id']);
可能存在的问题:intval对字符型无用,字符型变量是怎么处理的呢?
如果字符型的addslashes,注意数字型盲注(见c2分析)
c) $tid=XX_Request("tid");
使用自己定义的安全过滤函数处理变量,很常见,很多框架都提供了解决方案,不过自己包装一个也是很常见的
可能存在的问题:
c1) 有没有忘记使用这个处理函数?
WooYun: chshcms 程氏CMS V3.0 注射(已在官方演示站测试)
$tid=CS_Request("tid"); //使用安全的CS_request addslash
$id=trim($_GET["id"]); //呵呵呵,曲项向天歌,CS_Request哭了
其实还是上面那个例子,自己忘了用这函数过滤了
c2) 函数本身是否安全?
WooYun: (新)程氏舞曲CMS 三步GETSHELL(实例演示+源码详析)
$t_Val = $magic?trim($_GET[$pi_strName]):addslashes(trim($_GET[$pi_strName]));
使用了addslashes,这就意味着逃脱单引号难度加大,需要寻找没有单引号保护的语句注入
addslashes只处理单引号和斜杠,因此无法过滤形如 134 and 1=1 这样的注射语句,请自行百度无单引号盲注
在下面的语句中,$cscms_name就是有单引号保护的,而$id是没有单引号保护的
$db-query("update ".Getdbname('xiaoxi')." set CS_DID=1 where CS_ID=".$id." and cs_usera='".$cscms_name."'");
所以id引发了盲注
c3) 过滤函数能否满足业务逻辑的特殊需求?
负数订单啦,自己修改自己的投票数啦,各种业务逻辑上的问题都有可能发生
非常可惜,这个我还没撞见过,如果以后撞见再更新到文章里
d) 不要忘记我们能控制referer等变量
可能存在的问题:
虽然发现GET/POST都过滤处理了,但是referer和cookie容易被忽视
$_SERVER["HTTP_REFERER"] 例子:
WooYun: MacCMS 6.x referer处理不当引发注射
很遗憾,这个截至今日还未公开,等公开了大家再去看吧
$_COOKIE['xxx'] 例子:
WooYun: TCCMS全版本COOKIE注入(已演示证明)
$sql="select password from ".$_Obj-table." where id=".$_COOKIE['userId'];
情况和GET时是一样的,不过注入时操作起来稍微麻烦些,SQLMAP教程我就不粘贴到这里了,不会COOKIE注射的请百度
e) 还有其他的输入变量,请各路高手带着实例补充!
目前,我们了解了程序总体上是如何处理用户输入的
0x02:单独搜索$_COOKIE,分析身份认证时的逻辑
原因:身份验证属于业务逻辑中“高危”的部分,大部分的高危漏洞都出在这里
可能出现的场景:
a) 没有cookie处理,直接全是session
那就等之后通读代码时直接去读认证算法好啦
b) 认证算法中强度太弱(用可控的COOKIE算来算去),降低了伪造身份的难度
WooYun: (新)程氏舞曲CMS 三步GETSHELL(实例演示+源码详析)
第二步伪造身份时
elseif($_COOKIE['CS_Login']!=md5($_COOKIE['CS_AdminID'].$_COOKIE['CS_AdminUserName'].$_COOKIE['CS_AdminPassWord'].$_COOKIE['CS_Quanx'])){
有什么意义呢?COOKIE我们能控制,当然之后程序有别的验证,这里只是举例,就这一句而言没有意义
实际上漏洞里这个CMS这个算法,后面只是在认证时没有用到安装时admin写死在config里的验证码而已,不过难度已经降下来了
c) 直接能绕过
如果情况b 没有其他验证了,那就绕过了
目前我们只是验证了登陆时的逻辑,之后还需分析权限的缜密程度
0x03:搜索所有的文件操作函数,分析其逻辑
原因:文件操作函数属于敏感函数,往往业务逻辑上的漏洞可能导致任意文件操作
可能出现的场景:
a) 任意文件下载
WooYun: appcms 最新版 1.3.708 任意文件下载
?php
if(isset($_GET['url']) trim($_GET['url']) != '' isset($_GET['type'])) {
$img_url = base64_decode($_GET['url']);
$shffix = trim($_GET['type']);
header("Content-Type: image/{$shffix}");
readfile($img_url);
} else {
die('image not find');
}
?
PS:由于是业务逻辑上的问题,是没办法通过自动扫描发现的,而且针对SQL和HTML的过滤是起不到特大作用的
任意文件读取的最大作用是读config.php 和各种系统的敏感文件(如何爆物理目录?请看0x04)
b) 任意文件写入
WooYun: CSCMS V3.5 最新版 后台命令执行GETSHELL(源码详析)
任意文件写入的最大应用就是写马了,最大障碍是绕过过滤的HTML字符比如: ,解决方式是大量应用base64
c) 任意文件删除
很遗憾,还没撞见过,要是撞见一个该多好
任意文件删除的作用可以是删除install.lock,然后重装CMS
d) 其他操作,求补充
文件操作可以结合爆目录
0x04:爆物理目录
原因:上一小节我们可能能够任意操作文件,但没拿到网站的物理目录地址,的确可以用黑盒不停地试图读取 c:\boot.ini 和 /etc/passwd 之类的来试图判断,但是这么弄实在不可靠
怎么办:使用php vulnerability hunter 自动扫描就好了,这个确实可以偷懒用工具扫描,因为这个爆目录危害实在太低了,必须配合其他漏洞才有危害,所以一般CMS都会有这种漏洞,我是说能扫描出来的漏洞
WooYun: appcms 最新版 1.3.708 任意文件下载
如果你不知道物理路径,你可以试着用工具扫描一下,然后再读取
0x05:搜索eval,preg_replace什么的,看看有没有命令执行
原因:能直接执行PHP代码,也就是说可以写一句话木马了(file_put_contents),当然,要找可写目录
这地方我一直没能找到例子,没有亲自实践过,求各路高手带实例提供几个?
0x06:可以开始通读代码了,从index开始,注意的是数据的传输和输出函数
原因:常见模式化的漏洞都不存在的话,就要分析整个系统了,因此需要完全而彻底地去做审计,这样比继续单独搜索变量然后跟踪更加省力一些
可能出现的场景:
a) 之前的过滤全白费了
WooYun: YXcms1.2.0版本 存储式XSS(实站演示+源码分析)
没公开,等公开再更新文章,这是一个存储式xss
b) 二次注入
由于二次开发中从数据库里取出的值没有过滤,导致注射,由于没有直接从用户输入中获得,所以之前步骤很难发现
哎呀,求各路高手提供个示例呀,我这个自己也没有碰到过丫
c) 平行权限、任意投票、越权访问 等等 等等 一大堆
0x07 总结
目前就知道这么些,希望能对刚接触PHP代码审计漏洞挖掘的新手有点帮助,由于我也是刚开始学习PHP漏洞挖掘不久,希望大家能广泛提供学习的建议以及思路,也请批评指正文章中不妥之处,更希望高手们能带着示例来指导。
零基础如何学习网络安全方面的知识?
零基础学习网络的话,并不建议自学,首先网络是比较抽象的内容,如果你去看书学习的话,没有人带教,书中出现的大量专业术语会难以理解,很难拼接起一个完整的框架,时间花费长,但是很难达到理想的学习效果。
网络安全涉及的知识面广、术语多、理论知识多,正给学习这门课程带来很多困难,也需要大量的时间精力学习。建议学习网络安全基础知识,应用加密学,协议层安全,传输层安全,unix安全,linux安全,防火墙技术,入侵攻防技术等。
题主说的这个培训机构还是不错的,面授课程,提供设备,包吃住,性价比很高。
如何学习渗透测试?
首先要根据自己的实际情况、确定学习的路线和方向的。就像建大楼,从顶端最华丽的那个地方开始,不可能成功。学渗透测试也一样,没选对入手的地方,导致学习过程中由于欠缺很多的知识点、很多概念理解不了、学习举步维艰、很容易半途而废。
现在我来分析下:
渗透测试属于信息安全行业,准确的说是网络计算机/IT行业
知道它行业属性,你大概就能清楚需要些什么样的基础知识了;下面是我从非计算机网络相关专业的同学想要学习渗透测试必须掌握的知识。
1)了解基本的网络知识、什么是IP地址(63.62.61.123),这个IP去掉点是扣扣学习群,可以免费获取学习课程。IP地址的基本概念IP地址的基本概念、IP段划分、什么是A段、B段、C段等
广域网、局域网、相关概念和IP地址划分范围。
2)端口的基本概念?端口的分类?
3)域名的基本概念、什么是URL、了解TCP/IP协议、
5)了解开放式通信系统互联参考模型(OSI)
6)了解http(超文本传输协议)协议概念、工作原理
7)了解WEB的静态页面和WEB动态页面,B/S和C/S结构
8)了解常见的服务器、例如、Windows server2003、Linux、UNIX等
9)了解常见的数据库、MySQL、Mssql、、Access、Oracle、db2等
10)了解基本的网络架构、例如:Linux + Apache + MySQL + php
11)了解基本的Html语言,就是打开网页后,在查看源码里面的Html语言
12)了解一种基本的脚本语言、例如PHP或者asp,jsp,cgi等
然后你想学习入门,需要学习以下最基础的知识:
1、开始入门学习路线
1)深入学习一种数据库语言,建议从MySQL数据库或者SQL Server数据库、简单易学且学会了。
其他数据库都差不多会了。
2)开始学习网络安全漏洞知识、SQL注入、XSS跨站脚本漏洞、CSRF、解析漏洞、上传漏洞、命令执行、弱口令、万能密码、文件包含漏洞、本地溢出、远程溢出漏洞等等
3)工具使用的学习、御剑、明小子、啊D、穿山甲(Pangolin)、Sqlmap、burpsuite抓包工具等等
2、Google hacker 语法学习
3、漏洞利用学习、SQL注入、XSS、上传、解析漏洞等
4、漏洞挖掘学习
5、想成为大牛的话、以上都是皮毛中的皮毛,但前提是以上的皮毛都是最基础的。
6、Linux系统命令学习、kali Linux 里面的工具学习、Metesploit学习
7、没事多逛逛安全论坛、看看技术大牛的文章、漏洞分析文章等
8、深入学习一门语言、Java或者Python等等,建议学习从Python开始学习、简单易学,容易上手。
9、提升自己的专业能力、把自己练成一个技术大牛、能给你带来一份稳定的高薪水工作,同时你还可利用自己的技术,额外的接些单子,做做副业,这个行业里是有很多单子可以接的。
10、当然想了解的可以来找我,我有时间会给你们答疑解惑的
sqlmap会产生垃圾数据吗
sqlmap不会产生垃圾数据。
sqlmap是一款开源免费的漏洞检查、利用工具。
可以检测页面中get,post参数,cookie,http头等。
可以实现数据榨取。
可以实现文件系统的访问。
可以实现操作命令的执行。
还可以对xss漏洞进行检测。
sqlmap 支持5种漏洞检测类型:
基于布尔的盲注检测 (如果一个url的地址为xxxx.php?id=1,那么我们可以尝试下的加上 and 1=1(和没加and1=1结果保持一致) 和 and 1=2(和不加and1=2结果不一致),则我们基本可以确定是存在布尔注入的。 )
基于时间的盲注检测(和基于布尔的检测有些类似.通过mysql的 sleep(int)) 来观察浏览器的响应是否等待了你设定的那个值 如果等待了,则表示执行了sleep,则基本确定是存在sql注入的
基于union联合查询的检测(适用于如果某个web项目对查询结果只展示一条而我们需要多条的时候 则使用union联合查询搭配concat还进行获取更多的信息)
基于堆叠查询的检测(首先看服务器支不支持多语句查询,一般服务器sql语句都是写死的,某些特定的地方用占位符来接受用户输入的变量,这样即使我们加and 也只能执行select(也不一定select,主要看应用场景,总之就是服务端写了什么,你就能执行什么)查询语句,如果能插入分号;则我们后面可以自己组合update,insert,delete等语句来进行进一步操作)
我怎么做黑客白客红客
如果你想学黑客:
黑客分为很多技术方面,如果想做系统端做二进制溢出之类的,推荐的是汇编+c
如果想要做前端,有xss,sql,上传之类的,xss推荐js+html+css,上传的话推荐php+asp+jsp,sql推荐php可以做代码审计哈,常用的黑客软件我不是特别推荐,我个人更推荐学习语言,但是这里也说一下吧:burpsuite,sqlmap,msf之类的,你可以下载个kalilinux系统,平时的话就多去乌云,或者其他什么地方看看文章之类的,多和大牛交流,如果你可以坚持,我感觉进步应该还是比较快的
jsp sql注入,和xss 问题。
sql注入的话就用sqlmap 、穿山甲、胡萝卜 xss没工具 需要你自己根据经验利用(比如反射型持久型的不同利用方法)。
sql注入和xss解决方法 一般用正则表达式过滤传入的参数,过滤字符串,检查函数语句。 实在不会的话就用 waf
初学网络安全需要先学什么语言
我也是刚学不久,但我知道学的编程语言至少有Mysql,Sqlserver,Php,JavScript,Python,Html5,Linux。当然这只是编程语言,还有很多技术,渗透工具要学,操作系统安全,服务器安全等,网络扫描,网络嗅探,常见网络攻击方式,tcp/IP协议,dvwa训练,sql注入,csrf,xss,密码学,缓冲区漏洞,逆向工程分析等等。我知道的就这么多。